直線やテキストボックス、図形の作成方法
VBAで直線やテキストボックス、図形を作成するには、図形の集まりを表すShapes【シェイプス】コレクションのメソッドを使用します。
Shapes【シェイプス】コレクションのメソッド一覧
メソッド | 内容 |
---|---|
AddLine【アドライン】 | ワークシート上に直線を作成します。 |
AddTextbox【アドテキストボックス】 | ワークシート上にテキストボックスを作成します。 |
AddShape【アドシェイプ】 | ワークシート上に図形を作成します。 |
AddLine【アドライン】メソッド
ワークシート上に直線を引くには、Shapes【シェイプス】コレクションのAddLine【アドライン】メソッドを使用します。
AddLine【アドライン】メソッドの書式と設定値(引数)の説明
オブジェクト.AddLine( BeginX, BeginY, EndX, EndY )
- オブジェクト(必須)
Shapes【シェイプス】コレクションを指定します。
Shapesコレクションについては図形の参照をご覧ください。 - BeginX【ビギンエックス】(必須)
直線の始点を左端からの位置で指定します。 - BeginY【ビギンワイ】(必須)
直線の始点を上端からの位置で指定します。 - EndX【エンドエックス】(必須)
直線の終点を左端からの位置で指定します。 - EndY【エンドワイ】(必須)
直線の終点を上端からの位置で指定します。
※位置の指定の単位はポイント(1ポイントは約0.35ミリ)でセルの行の高さの単位です。
セルに合わせて直線を引くには、Range【レンジ】オブジェクトのTop・Left・Heihht・Wodthプロパティで座標(ポイント)を取得して指定します。
AddTextbox【アドテキストボックス】メソッド
ワークシート上にテキストボックスを作成するには、Shapes【シェイプス】コレクションのAddTextbox【アドテキストフボックス】メソッドを使用します。
AddTextbox【アドテキストボックス】メソッドの書式と設定値(引数)の説明
オブジェクト.AddTxetbox( Orientation, Left, Top, Width, Height )
- オブジェクト(必須)
Shapes【シェイプス】コレクションを指定します。 - Orientation【オリエンテーション】(必須)
テキストボックスの文字列の向きを指定します。
MsoTxetOrientation列挙型の定数で指定します。
定数 | 内容 |
---|---|
msoTextOrientationHorizontal 【エムエスオーテキストオリエンテーションホリゾンタル】 | 横書き |
msoTextOrientationVerticalFarEast 【エムエスオーテキストオリエンテーションバーティカルフォアイースト】 | 縦書き(アジア言語用) |
msoTextOrientationUpward 【エムエスオーテキストオリエンテーションアップワード】 | 下から上 |
msoTextOrientationDownward 【エムエスオーテキストオリエンテーションダウンワード】 | 上から下 |
msoTextOrientationVertical 【エムエスオーテキストオリエンテーションバーティカル】 | 垂直方向 |
msoTextOrientationHorizontalRotatedFarEas 【エムエスオーテキストオリエンテーションホリゾンタルローティデットフォアイース】 | 水平方向および回転(アジア言語用) |
- Left【レフト】(必須)
テキストボックスの左端の位置をポイント単位で指定します。 - Top【トップ】(必須)
テキストボックスの上端の位置をポイント単位で指定します。 - Width【ワイズ】(必須)
テキストボックスの幅をポイント単位で指定します。 - Height【ハイト】(必須)
テキストボックスの高さをポイント単位で指定します。
AddShape【アドシェイプ】メソッド
ワークシート上に図形を作成するには、Shapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドを使用します。
AddShape【アドシェイプ】メソッドの書式と設定値(引数)の説明
オブジェクト.AddShape( Type, Left, Top, Width, Height )
【戻り値】Shapeオブジェクトを返します。
- オブジェクト(必須)
Shapesコレクションを指定します。 - Type【タイプ】(必須)
作成する図形の種類をMsoAutoShapeType列挙型の定数、または値で指定します。MsoAutoShapeType列挙型 名前 値 説明 msoShapeRectangle 1 四角形 msoShapeParallelogram 2 平行四辺形 msoShapeTrapezoid 3 台形 msoShapeDiamond 4 ひし形 msoShapeRoundedRectangle 5 角丸四角形 msoShapeOctagon 6 八角形 msoShapeIsoscelesTriangle 7 二等辺三角形 msoShapeRightTriangle 8 直角三角形 msoShapeOval 9 楕円 msoShapeHexagon 10 六角形 msoShapeCross 11 十字形 msoShapeRegularPentagon 12 ホームベース msoShapeCan 13 円柱 msoShapeCube 14 直方体 msoShapeBevel 15 斜角 msoShapeFoldedCorner 16 メモ msoShapeSmileyFace 17 スマイル msoShapeDonut 18 ドーナツ msoShapeNoSymbol 19 禁止 msoShapeBlockArc 20 アーチ msoShapeHeart 21 ハート msoShapeLightningBolt 22 稲妻 msoShapeSun 23 太陽 msoShapeMoon 24 月 msoShapeArc 25 円弧 msoShapeDoubleBracket 26 大かっこ msoShapeDoubleBrace 27 中かっこ msoShapePlaque 28 ブローチ msoShapeLeftBracket 29 左大かっこ msoShapeRightBracket 30 右大かっこ msoShapeLeftBrace 31 左中かっこ msoShapeRightBrace 32 右中かっこ msoShapeRightArrow 33 右向きブロック矢印 msoShapeLeftArrow 34 左向きブロック矢印 msoShapeUpArrow 35 上向きブロック矢印 msoShapeDownArrow 36 下向きブロック矢印 msoShapeLeftRightArrow 37 左右ブロック矢印 msoShapeUpDownArrow 38 上下 2 方向ブロック矢印 msoShapeQuadArrow 39 4 方向ブロック矢印 msoShapeLeftRightUpArrow 40 左、右、および上の
3 方向ブロック矢印msoShapeBentArrow 41 90°の曲線に続くブロック矢印 msoShapeUTurnArrow 42 U 字型のブロック矢印 msoShapeLeftUpArrow 43 左および上矢印の
2方向ブロック矢印msoShapeBentUpArrow 44 90°の鋭角線に続くブロック msoShapeCurvedRightArrow 45 右カーブ ブロック矢印 msoShapeCurvedLeftArrow 46 左カーブ ブロック矢印 msoShapeCurvedUpArrow 47 上カーブ ブロック矢印 msoShapeCurvedDownArrow 48 下カーブ ブロック矢印 msoShapeStripedRightArrow 49 先にストライプの付いた
右向きのブロック矢印msoShapeNotchedRightArrow 50 右向きのV字型矢印 msoShapePentagon 51 ホームベース msoShapeChevron 52 山形 msoShapeRightArrowCallout 53 右矢印の付いた吹き出し msoShapeLeftArrowCallout 54 左矢印の付いた吹き出し msoShapeUpArrowCallout 55 上矢印の付いた吹き出し msoShapeDownArrowCallout 56 下矢印の付いた吹き出し msoShapeLeftRightArrowCallout 57 左右矢印の付いた吹き出し msoShapeUpDownArrowCallout 58 上下のブロック矢印の付いた吹き出し msoShapeQuadArrowCallout 59 4 方向矢印の付いた吹き出し msoShapeCircularArrow 60 180°の曲線に続くブロック矢印 msoShapeFlowchartProcess 61 処理フローチャート記号 msoShapeFlowchartAlternateProcess 62 代替処理フローチャート記号 msoShapeFlowchartDecision 63 判断フローチャート記号 msoShapeFlowchartData 64 データ フローチャート記号 msoShapeFlowchartPredefinedProcess 65 定義済み処理フローチャート記号 msoShapeFlowchartInternalStorage 66 内部記憶フローチャート記号 msoShapeFlowchartDocument 67 書類フローチャート記号 msoShapeFlowchartMultidocument 68 複数書類フローチャート記号 msoShapeFlowchartTerminator 69 端子フローチャート記号 msoShapeFlowchartPreparation 70 準備フローチャート記号 msoShapeFlowchartManualInput 71 手操作入力フローチャート記号 msoShapeFlowchartManualOperation 72 手作業フローチャート記号 msoShapeFlowchartConnector 73 結合子フローチャート記号 msoShapeFlowchartOffpageConnector 74 他ページ結合子フローチャート記号 msoShapeFlowchartCard 75 カード フローチャート記号 msoShapeFlowchartPunchedTape 76 せん孔テープ フローチャート記号 msoShapeFlowchartSummingJunction 77 和接合フローチャート記号 msoShapeFlowchartOr 78 論理和フローチャート記号 msoShapeFlowchartCollate 79 照合フローチャート記号 msoShapeFlowchartSort 80 分類フローチャート記号 msoShapeFlowchartExtract 81 抜き出しフローチャート記号 msoShapeFlowchartMerge 82 組み合わせフローチャート記号 msoShapeFlowchartStoredData 83 記憶データ フローチャート記号 msoShapeFlowchartDelay 84 論理積ゲート フローチャート記号 msoShapeFlowchartSequentialAccessStorage 85 順次アクセス記憶フローチャート記号 msoShapeFlowchartMagneticDisk 86 磁気ディスク フローチャート記号 msoShapeFlowchartDirectAccessStorage 87 直接アクセス記憶フローチャート記号 msoShapeFlowchartDisplay 88 表示フローチャート記号 msoShapeExplosion1 89 爆発 msoShapeExplosion2 90 爆発 msoShape4pointStar 91 4 ポイントの星 msoShape5pointStar 92 5 ポイントの星 msoShape8pointStar 93 8 ポイントの星 msoShape16pointStar 94 16 ポイントの星 msoShape24pointStar 95 24 ポイントの星 msoShape32pointStar 96 32 ポイントの星 msoShapeUpRibbon 97 リボンの端よりも
上に中央面があるリボンmsoShapeDownRibbon 98 リボンの端よりも
下に中央面があるリボンmsoShapeCurvedUpRibbon 99 上カーブリボン msoShapeCurvedDownRibbon 100 下カーブ リボン msoShapeVerticalScroll 101 縦巻き msoShapeHorizontalScroll 102 横巻き msoShapeWave 103 大波 msoShapeDoubleWave 104 小波 msoShapeRectangularCallout 105 四角形吹き出し msoShapeRoundedRectangularCallout 106 角丸四角形吹き出し msoShapeOvalCallout 107 円形吹き出し msoShapeCloudCallout 108 雲形吹き出し msoShapeLineCallout1 109 枠付きで水平の
吹き出し線の付いた吹き出しmsoShapeLineCallout2 110 斜めの直線の付いた吹き出し msoShapeLineCallout3 111 折れ線の付いた吹き出し msoShapeLineCallout4 112 U 字型の吹き出し線分の
付いた吹き出しmsoShapeLineCallout1AccentBar 113 水平の強調線の付いた吹き出し msoShapeLineCallout2AccentBar 114 斜めの吹き出し線と
強調線の付いた吹き出しmsoShapeLineCallout3AccentBar 115 折れた吹き出し線と
強調線の付いた吹き出しmsoShapeLineCallout4AccentBar 116 強調線およびU字型の
吹き出し線分の付いた吹き出しmsoShapeLineCallout1NoBorder 117 水平線の付いた吹き出し msoShapeLineCallout2NoBorder 118 枠および斜めの
吹き出し線のない吹き出しmsoShapeLineCallout3NoBorder 119 枠および折れた
吹き出し線のない吹き出しmsoShapeLineCallout4NoBorder 120 枠線およびU字型の
吹き出し線分のない吹き出しmsoShapeLineCallout1BorderandAccentBar 121 枠付きで
水平の強調線の付いた吹き出しmsoShapeLineCallout2BorderandAccentBar 122 枠、斜めの直線
および強調線の付いた吹き出しmsoShapeLineCallout3BorderandAccentBar 123 枠、折れた吹き出し線
強調線の付いた吹き出しmsoShapeLineCallout4BorderandAccentBar 124 枠線、強調線、およびU字型の
吹き出し線分の付いた吹き出しmsoShapeActionButtonCustom 125 既定の画像またはテキストのない
ボタンマウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeActionButtonHome 126 [ホーム] ボタンマウスクリック
およびマウスオーバー動作をサポートしますmsoShapeActionButtonHelp 127 [ヘルプ] ボタンマウスクリック
およびマウスオーバー動作をサポートしますmsoShapeActionButtonInformation 128 [情報] ボタンマウスクリック
およびマウスオーバー動作をサポートしますmsoShapeActionButtonBackorPrevious 129 [戻る] または [前へ] ボタン
マウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeActionButtonForwardorNext 130 [進む] または [次へ] ボタンマウスクリック
およびマウスオーバー動作をサポートしますmsoShapeActionButtonBeginning 131 [上旬] ボタンマウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeActionButtonEnd 132 [終了] ボタンマウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeActionButtonReturn 133 [戻る] ボタンマウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeActionButtonDocument 134 [文書] ボタンマウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeActionButtonSound 135 [サウンド] ボタンマウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeActionButtonMovie 136 [ビデオ] ボタンマウスクリックおよび
マウスオーバー動作をサポートしますmsoShapeBalloon 137 吹き出し msoShapeNotPrimitive 138 サポートされていません msoShapeFlowchartOfflineStorage 139 オフライン記憶域フローチャート記号 msoShapeLeftRightRibbon 140 両端に矢印が付いているリボン msoShapeDiagonalStripe 141 四角形から
2 つの三角形部分が断ち切られた形斜線msoShapePie 142 円グラフの一片が切り取られた形 msoShapeNonIsoscelesTrapezoid 143 台形 msoShapeDecagon 144 十角形 msoShapeHeptagon 145 七角形 msoShapeDodecagon 146 12 角形 msoShape6pointStar 147 6 ポイントの星 msoShape7pointStar 148 7 ポイントの星 msoShape10pointStar 149 10 ポイントの星 msoShape12pointStar 150 12 ポイントの星 msoShapeRound1Rectangle 151 1 つの角が丸くなっている四角形 msoShapeRound2SameRectangle 152 1 辺を共有する
2つの角が丸くなっている四角形msoShapeSnipRoundRectangle 154 1 つの角が欠けていて
1つの角が丸くなっている四角形msoShapeSnip1Rectangle 155 1 つの角が欠けている四角形 msoShapeSnip2SameRectangle 156 1 辺を共有する
2つの角が欠けている四角形msoShapeRound2DiagRectangle 157 対角にある
2つの角が丸くなっている四角形msoShapeSnip2DiagRectangle 157 対角にある
2つの角が欠けている四角形msoShapeFrame 158 四角形の写真フレーム msoShapeHalfFrame 159 四角形の
写真フレームを半分にした形msoShapeTear 160 水滴 msoShapeChord 161 円と、円周上にある
2点を円の内側を通って結ぶ直線円と弦msoShapeCorner 162 四角形の欠落部分がある四角形 msoShapeMathPlus 163 加算記号「+」 msoShapeMathMinus 164 減算記号「-」 msoShapeMathMultiply 165 乗算記号「x」 msoShapeMathDivide 166 除算記号「÷」 msoShapeMathEqual 167 等号「=」 msoShapeMathNotEqual 168 不等号「≠」 msoShapeCornerTabs 169 四角形の形に沿って配置された4つの
直角三角形4 つの切り取られた角部分msoShapeSquareTabs 170 四角形の輪郭を示す
4つの小さな四角形msoShapePlaqueTabs 171 四角形の輪郭を示す
4つの四分円msoShapeGear6 172 歯が 6 個ある歯車 msoShapeGear9 173 歯が 9 個ある歯車 msoShapeFunnel 174 じょうご msoShapePieWedge 175 四分円 msoShapeLeftCircularArrow 176 反時計回りの方向を指す
環状矢印msoShapeLeftRightCircularArrow 177 時計回りと反時計回りの両方を指す
環状矢印両端に矢印が付いている
曲線状の矢印msoShapeSwooshArrow 178 曲線状の矢印 msoShapeCloud 179 雲の形 msoShapeChartX 180 正方形を対角線で4分割した形 msoShapeChartStar 181 正方形を垂線と対角線で6分割した形 msoShapeChartPlus 182 正方形を垂直方向と
水平方向に4分割した形msoShapeLineInverse 183 右上がりの斜線 - Left【レフト】(必須)
図形の左端の位置をポイント単位で指定します。 - Top【トップ】(必須)
図形の上端の位置をポイント単位で指定します。 - Width【ワイズ】(必須)
図形の幅をポイント単位で指定します。 - Height【トップ】(必須)
図形の高さをポイント単位で指定します。
B列のセルに上記の183種類の図形を作成するコードと解説
Sub 図形作成() Dim i As Long For i = 1 To 183 On Error Resume Next With ActiveSheet.Shapes.AddShape(Type:=i, Left:=Range("B" & i).Left + 2.5, _ Top:=Range("B" & i).Top + 2.5, Width:=Range("B" & i).Width - 5, Height:=Range("B" & i).Height - 5) .Line.ForeColor.RGB = RGB(0, 0, 0) .Fill.Visible = False End With Next i End Sub
繰り返し処理で使用する図形タイプの値と列番号を兼ねるカウンター変数の変数iを長整数型(Longで宣言します。
3行目【For i = 1 To 183】
For【フォー】ステートメントでの繰り返し処理の始まりです。カウンター変数「i」に1~183(図形数)の値を順次
代入していきます。
4行目【On Error Resume Next】
図形タイプの値138番はサポートされていない図形で図形を取得出来ずにエラーが発生するため
On Error Resume Nextステートメントで変数iが138になったときに発生するエラーを無視して処理を続行します。
5~6行目【With ActiveSheet.Shapes.AddShape(Type:=i, Left:=Range(“B” & i).Left + 2.5, Top:=Range(“B” & i).Top + 2.5, Width:=Range(“B” & i).Width – 5, Height:=Range(“B” & i).Height – 5)】
Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティで図形の集まりを表すShapes【シェイプス】コレクションを参照し、AddShape【アドシェイプ】メソッドで図形を追加します。引数Type【タイプ】は変数iで図形の定数の値1~183を繰り返し処理の中で順次代入していきます。引数Left【レフト】、引数Top【トップ】、引数Width【ワイズ】、引数Height【カイト】はRange【レンジ】オブジェクトのLeft、Top、Width、Heightプロパティを使用して図形がセル内に収まるように位置のポイントを取得しています。この作成した図形をWith【ウィズ】ステートメントで指定します。
7行目【.Line.ForeColor.RGB = RGB(0, 0, 0)】
Withステートメントで指定したShape【シェイプ】オブジェクトに対してLine【ライン】プロパティで線を引きForeColor【フォアカラー】ステートメントでRGB関数を使用して
黒に線を塗りつぶしています。
8行目【.Fill.Visible = False】
Fillプロパティ(図形の塗りつぶし)をViSible = falseにすることにより図形の塗りつぶしを透明色にしています。
以上で、図形の作成についての解説を終了します。ありがとうございました。