Excel VBA 直線やテキストボックス、図形を作成するメソッド

スポンサーリンク

直線やテキストボックス、図形の作成方法

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列挙型の定数で指定します。
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
2行目【Dim i As Long】
繰り返し処理で使用する図形タイプの値と列番号を兼ねるカウンター変数の変数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にすることにより図形の塗りつぶしを透明色にしています。

以上で、図形の作成についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告