【EXCEL】色のついた四角形を並べる(続き2) 

# やること
　[【EXCEL】図形挿入のマクロメモ #Excel - Qiita](https://qiita.com/a_kata/items/12eede73fd9120dac683)で実施しそびれた、[【PowerPoint】色のついた四角形を並べる(続き) #VBA - Qiita](https://qiita.com/a_kata/items/8055a4967dd4747ae336)をEXCELで実施。


 # 事例
　「Function MsoAutoShapeType_list」を微修正し、「Sub 色四角を作成し配置」を修正。

```vb:shape一覧配置.bas
Option Explicit
Sub 色四角を作成し配置()
    Dim cell_w As Single                    ' セルの幅
    Dim cell_h As Single                    ' セルの高さ
    Range("A1").Activate                    ' 以下アクティブセル対応にしたので仮置き
    cell_w = ActiveCell.Width * 20
    cell_h = ActiveCell.Height * 5 * 20
    Call MsoAutoShapeType_list(cell_w, cell_h)
End Sub



Function MsoAutoShapeType_list(ByVal sld_w As Single, ByVal sld_h As Single)
'-------------------------------------------------------------------
' 関数: MsoAutoShapeType_list
' 説明: 指定したスライドの幅(sld_w)と高さ(sld_h)に基づいて、
'       MsoAutoShapeTypeの形状をスライド上に描画する関数。
' 引数:
'   sld_w      - スライドの幅 (Single型)
'   sld_h      - スライドの高さ (Single型)
' 戻り値:
'   なし
'
' 使用例:
'   ' 幅1200、高さ1575のスライドにMsoAutoShapeTypeの形状一覧を描画する
'   Call MsoAutoShapeType_list(1200, 1575)
'-------------------------------------------------------------------
    Dim shp_x As Single                 ' 四角形の左上隅のX座標
    Dim shp_y As Single                 ' 四角形の左上隅のY座標
    Dim shp_w As Single                 ' 四角形の幅
    Dim shp_h As Single                 ' 四角形の高さ
'    Dim shp_r As Single                 ' 四角形の色(R)
'    Dim shp_g As Single                 ' 四角形の色(G)
'    Dim shp_b As Single                 ' 四角形の色(B)
    Dim R As Single, G As Single, B As Single
    Dim i As Long, j As Long, k As Long
    
    Const div_count = 20                ' 分割数
    ' 四角のサイズを決定
    shp_w = sld_w / div_count * 0.8     ' 二回り小さくして隙間をあけておく
    shp_h = shp_w
    ' 色の初期化(淡青)
    R = 128
    G = 128
    B = 255
    ' 描画
    For i = 1 To 183
        j = Int(i / div_count)
        shp_x = (sld_w / div_count) + (i - 1 - j * div_count) * (sld_w / div_count)
        shp_x = shp_x + sld_w / div_count * 0.2     ' 右合わせ
        shp_y = (sld_w / div_count) + j * (sld_w / div_count)
        k = i
        If k = 138 Then                             ' msoShapeNotPrimitiveが非サポートのため
        ElseIf k = 183 Then                         ' msoShapeLineInversenのみ塗りつぶし不可
            With ActiveSheet.Shapes.AddShape _
            (k, shp_x, shp_y, shp_w, shp_h)
                .Line.Weight = 0                    ' 枠線の線幅(0で枠線なし)
                .Line.ForeColor.RGB = RGB(0, 0, 0)  ' 線の色(黒)
                .TextFrame.Characters.Font.Name = "Meiryo UI"
'                .TextFrame.Characters.Font.NameFarEast = "Meiryo UI"
                .TextFrame.Characters.Font.Size = 8
                .TextFrame2.WordWrap = False
                .TextFrame.Characters.Text = k
            End With
        Else
            With ActiveSheet.Shapes.AddShape _
            (k, shp_x, shp_y, shp_w, shp_h)
                .Fill.ForeColor.RGB = RGB(R, G, B)  ' 塗りつぶしの色
                .Fill.Transparency = 0              ' 塗りつぶしの透明度(0で不透明)
                .Line.Weight = 0                    ' 枠線の線幅(0で枠線なし)
                .Line.ForeColor.RGB = RGB(0, 0, 0)  ' 線の色(黒)
                .TextFrame.Characters.Font.Name = "Meiryo UI"
'                .TextFrame.Characters.Font.NameFarEast = "Meiryo UI"
                .TextFrame.Characters.Font.Size = 8
                .TextFrame.Characters.Font.Color = RGB(R, 0, 0)
                .TextFrame2.WordWrap = False
                .TextFrame.Characters.Text = k
            End With
        End If
    Next i
'値  名前    説明
'-2  msoShapeMixed   値のみを返します。その他の状態の組み合わせを示します。
'1   msoShapeRectangle 四角形
'2   msoShapeParallelogram Parallelogram
'3   msoShapeTrapezoid 台形
'4   msoShapeDiamond ひし形
'5   msoShapeRoundedRectangle 丸い四角形
'6   msoShapeOctagon Octagon
'7   msoShapeIsoscelesTriangle   Isosceles の三角形
'8   msoShapeRightTriangle 右三角形
'9   msoShapeOval 楕円
'10  msoShapeHexagon Hexagon
'11  msoShapeCross 交差
'12  msoShapeRegularPentagon ペンタゴン
'13  msoShapeCan Can
'14  msoShapeCube キューブ
'15  msoShapeBevel Bevel
'16  msoShapeFoldedCorner 折りたたまれたコーナー
'17  msoShapeSmileyFace スマイリーフェイス
'18  msoShapeDonut ドーナツ
'19  msoShapeNoSymbol    "No" 記号
'20  msoShapeBlockArc ブロック円弧
'21  msoShapeHeart ハート
'22  msoShapeLightningBolt 稲妻
'23  msoShapeSun Sun
'24  msoShapeMoon Moon
'25  msoShapeArc Arc
'26  msoShapeDoubleBracket 二重かっこ
'27  msoShapeDoubleBrace 二重中かっこ
'28  msoShapePlaque プラーク
'29  msoShapeLeftBracket 左かっこ
'30  msoShapeRightBracket 右かっこ
'31  msoShapeLeftBrace 左中かっこ
'32  msoShapeRightBrace 右中かっこ
'33  msoShapeRightArrow 右を向く矢印をブロックする
'34  msoShapeLeftArrow 左をポイントするブロック矢印
'35  msoShapeUpArrow 上を向くブロック矢印
'36  msoShapeDownArrow 下向きの矢印をブロックする
'37  msoShapeLeftRightArrow 左と右の両方を指す矢印を使用して矢印をブロックする
'38  msoShapeUpDownArrow 上下をポイントするブロック矢印
'39  msoShapeQuadArrow 上､下､左､右をポイントする矢印をブロックする
'40  msoShapeLeftRightUpArrow 左､右､上をポイントする矢印を使用して矢印をブロックする
'41  msoShapeBentArrow   90°の曲線に続くブロック矢印。
'42  msoShapeUTurnArrow  U 図形を形成するブロック矢印
'43  msoShapeLeftUpArrow 左と上を指す矢印を使用して矢印をブロックする
'44  msoShapeBentUpArrow 90°の鋭角線に続くブロック矢印。 既定では上向きです。
'45  msoShapeCurvedRightArrow 右にカーブするブロック矢印
'46  msoShapeCurvedLeftArrow 左の曲線の矢印をブロックする
'47  msoShapeCurvedUpArrow 上に曲線を表示するブロック矢印
'48  msoShapeCurvedDownArrow 下に曲線を表示するブロック矢印
'49  msoShapeStripedRightArrow 尾にストライプを付け､右をポイントするブロック矢印
'50  msoShapeNotchedRightArrow 右をポイントする切り欠きブロック矢印
'51  msoShapePentagon ペンタゴン
'52  msoShapeChevron Chevron
'53  msoShapeRightArrowCallout 右をポイントする矢印付きの吹き出し
'54  msoShapeLeftArrowCallout 左をポイントする矢印付きの吹き出し
'55  msoShapeUpArrowCallout 上を向く矢印付きの吹き出し
'56  msoShapeDownArrowCallout 下を向く矢印付きの吹き出し
'57  msoShapeLeftRightArrowCallout 左と右の両方を指す矢印付きの吹き出し
'58  msoShapeUpDownArrowCallout 上下を指す矢印付きの吹き出し
'59  msoShapeQuadArrowCallout 上､下､左､右の矢印で吹き出し
'60  msoShapeCircularArrow   180 度の曲線の角度に従うブロック矢印
'61  msoShapeFlowchartProcess プロセスフローチャートの記号
'62  msoShapeFlowchartAlternateProcess 代替プロセスフローチャート記号
'63  msoShapeFlowchartDecision 決定フローチャートの記号
'64  msoShapeFlowchartData   データ フローチャートの記号
'65  msoShapeFlowchartPredefinedProcess 定義済みのプロセスフローチャート記号
'66  msoShapeFlowchartInternalStorage 内部記憶域フローチャート記号
'67  msoShapeFlowchartDocument ドキュメントフローチャート記号
'68  msoShapeFlowchartMultidocument 複数ドキュメントフローチャートの記号
'69  msoShapeFlowchartTerminator ターミネーターフローチャート記号
'70  msoShapeFlowchartPreparation 準備フローチャートの記号
'71  msoShapeFlowchartManualInput 手動入力フローチャート記号
'72  msoShapeFlowchartManualOperation 手動操作フローチャート記号
'73  msoShapeFlowchartConnector コネクタフローチャート記号
'74  msoShapeFlowchartOffpageConnector   オフページ コネクタフローチャート記号
'75  msoShapeFlowchartCard カードフローチャート記号
'76  msoShapeFlowchartPunchedTape パンチテープのフローチャート記号
'77  msoShapeFlowchartSummingJunction 合計ジャンクションフローチャートの記号
'78  msoShapeFlowchartOr "Or" フローチャート記号
'79  msoShapeFlowchartCollate フローチャートの記号を照合する
'80  msoShapeFlowchartSort フローチャート記号の並べ替え
'81  msoShapeFlowchartExtract フローチャート記号の抽出
'82  msoShapeFlowchartMerge 差し込みフローチャートの記号
'83  msoShapeFlowchartStoredData 格納されたデータフローチャートの記号
'84  msoShapeFlowchartDelay 遅延フローチャート記号
'85  msoShapeFlowchartSequentialAccessStorage    シーケンシャル アクセスストレージフローチャート記号
'86  msoShapeFlowchartMagneticDisk 磁気ディスクフローチャート記号
'87  msoShapeFlowchartDirectAccessStorage 直接アクセスストレージフローチャートの記号
'88  msoShapeFlowchartDisplay フローチャート記号の表示
'89  msoShapeExplosion1 Explosion
'90  msoShapeExplosion2 Explosion
'91  msoShape4pointStar  4 ポイントの星
'92  msoShape5pointStar  5 ポイントの星
'93  msoShape8pointStar  8 ポイントの星
'94  msoShape16pointStar 16 ポイントの星
'95  msoShape24pointStar 24 ポイントの星
'96  msoShape32pointStar 32 ポイントの星
'97  msoShapeUpRibbon    リボンの端の上に中央の領域を持つリボン バナー
'98  msoShapeDownRibbon  リボンの端の下に中央の領域を持つリボン バナー
'99  msoShapeCurvedUpRibbon  曲線を上に示すリボン バナー
'100 msoShapeCurvedDownRibbon    下にカーブするリボン バナー
'101 msoShapeVerticalScroll 垂直スクロール
'102 msoShapeHorizontalScroll 水平スクロール
'103 msoShapeWave 小波
'104 msoShapeDoubleWave 倍波
'105 msoShapeRectangularCallout 長方形の吹き出し
'106 msoShapeRoundedRectangularCallout 四角形の丸い吹き出し
'107 msoShapeOvalCallout 楕円形の吹き出し
'108 msoShapeCloudCallout クラウド吹き出し
'109 msoShapeLineCallout1 罫線と水平方向の引き出し線を持つ吹き出し
'110 msoShapeLineCallout2 対角線付き吹き出し
'111 msoShapeLineCallout3 角度付き線の吹き出し
'112 msoShapeLineCallout4    U 字型を形成する引き出し線セグメントを含む吹き出し
'113 msoShapeLineCallout1AccentBar   水平アクセント バー付きの吹き出し
'114 msoShapeLineCallout2AccentBar   斜めの引き出し線とアクセント バーを持つ吹き出し
'115 msoShapeLineCallout3AccentBar   斜め引き出し線とアクセント バーを持つ吹き出し
'116 msoShapeLineCallout4AccentBar   U 字型を形成するアクセント バーと引き出し線セグメントを含む吹き出し
'117 msoShapeLineCallout1NoBorder 水平線付き吹き出し
'118 msoShapeLineCallout2NoBorder 罫線と斜めの引き出し線がない吹き出し
'119 msoShapeLineCallout3NoBorder 罫線と角度付き引き出し線がない吹き出し
'120 msoShapeLineCallout4NoBorder    U 字型を形成する罫線セグメントと引き出し線セグメントがない吹き出し
'121 msoShapeLineCallout1BorderandAccentBar  罫線と水平方向のアクセント バーを持つ吹き出し
'122 msoShapeLineCallout2BorderandAccentBar  罫線、斜めの直線、アクセント バーを含む吹き出し
'123 msoShapeLineCallout3BorderandAccentBar  罫線、角度付き引き出し線、アクセント バーを含む吹き出し
'124 msoShapeLineCallout4BorderandAccentBar  U 字型を形成する罫線、アクセント バー、引き出し線セグメントを含む吹き出し
'125 msoShapeActionButtonCustom  既定の画像またはテキストのないボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'126 msoShapeActionButtonHome    [?ホーム] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'127 msoShapeActionButtonHelp    [?ヘルプ] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'128 msoShapeActionButtonInformation [?情報] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'129 msoShapeActionButtonBackorPrevious  [?戻る] または [?前へ] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'130 msoShapeActionButtonForwardorNext   [?進む] または [?次へ] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'131 msoShapeActionButtonBeginning   [?上旬] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'132 msoShapeActionButtonEnd [?終了] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'133 msoShapeActionButtonReturn  [?戻る] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'134 msoShapeActionButtonDocument    [?文書] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'135 msoShapeActionButtonSound   [?サウンド] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'136 msoShapeActionButtonMovie   [?ビデオ] ボタン。 マウスクリックおよびマウスオーバー動作をサポートします。
'137 msoShapeBalloon バルーン
'138 msoShapeNotPrimitive 非サポート
'139 msoShapeFlowchartOfflineStorage オフライン ストレージフローチャートの記号
'140 msoShapeLeftRightRibbon 両端に矢印が付くリボン
'141 msoShapeDiagonalStripe  2 つの三角形図形が削除された四角形。斜めのストライプ
'142 msoShapePie 部分が見つからない円 ('pie')
'143 msoShapeNonIsoscelesTrapezoid 非対称の非平行辺を持つ台形
'144 msoShapeDecagon デカゴン
'145 msoShapeHeptagon ヘプタゴン
'146 msoShapeDodecagon   12 角形。
'147 msoShape6pointStar  6 ポイントの星
'148 msoShape7pointStar  7 ポイントの星
'149 msoShape10pointStar 10 ポイントの星
'150 msoShape12pointStar 12 ポイントの星
'151 msoShapeRound1Rectangle 角が丸い四角形
'152 msoShapeRound2SameRectangle 側面を共有する 2 つの角を持つ四角形
'154 msoShapeSnipRoundRectangle  角が 1 つ、角が丸い四角形
'155 msoShapeSnip1Rectangle  角を 1 つ切り取った四角形
'156 msoShapeSnip2SameRectangle  側面を共有する 2 つのスニップされた角を持つ四角形
'157 msoShapeRound2DiagRectangle 四角形の角が 2 つ丸く、対角線が付いている
'157 msoShapeSnip2DiagRectangle  角が斜め向きに 2 つの角を切り取った四角形
'158 msoShapeFrame   長方形のピクチャ フレーム
'159 msoShapeHalfFrame 長方形の額縁の半分
'160 msoShapeTear 水滴
'161 msoShapeChord   円の内側を通って境界上の 2 つの点を結ぶ線を持つ円。和音を含む円
'162 msoShapeCorner 四角形の欠落部分がある四角形｡
'163 msoShapeMathPlus    追加記号?+
'164 msoShapeMathMinus   減算記号?-
'165 msoShapeMathMultiply    乗算記号?x
'166 msoShapeMathDivide  分割記号?÷
'167 msoShapeMathEqual   同等性記号?=
'168 msoShapeMathNotEqual    同等でない記号?≠
'169 msoShapeCornerTabs  四角形の形に沿って配置された 4 つの直角三角形。4 つの切り取られた角部分。
'170 msoShapeSquareTabs  四角形の図形を定義する 4 つの小さな四角形
'171 msoShapePlaqueTabs  四角形の図形を定義する 4 つの四角形
'172 msoShapeGear6   6 つの歯を持つ歯車
'173 msoShapeGear9   歯が 9 個ある歯車。
'174 msoShapeFunnel ファネル
'175 msoShapePieWedge    円形の図形の 4 分の 1
'176 msoShapeLeftCircularArrow 反時計回りを指す円形の矢印
'177 msoShapeLeftRightCircularArrow 時計回りおよび反時計回りを指す円形の矢印｡両端にポイントが付く曲線の矢印
'178 msoShapeSwooshArrow 曲線の矢印
'179 msoShapeCloud クラウド図形
'180 msoShapeChartX  四角形を斜線に沿って 4 つの部分に分割
'181 msoShapeChartStar   垂直線と斜線に沿って 6 つの部分に分割された四角形
'182 msoShapeChartPlus   垂直方向と水平方向に 4 つの四分の一に分割された四角形
'183 msoShapeLineInverse 行の逆数
'[MsoAutoShapeType 列挙 (Office) | Microsoft Learn](https://learn.microsoft.com/ja-JP/office/vba/api/office.msoautoshapetype)
End Function
```


# 結果
![20250508_224311.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838258/346e396c-31ed-4ef0-8dbc-af6e3b5515d8.jpeg)