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列挙型
    名前説明
    msoShapeRectangle1四角形
    msoShapeParallelogram2平行四辺形
    msoShapeTrapezoid3台形
    msoShapeDiamond4ひし形
    msoShapeRoundedRectangle5角丸四角形
    msoShapeOctagon6八角形
    msoShapeIsoscelesTriangle7二等辺三角形
    msoShapeRightTriangle8直角三角形
    msoShapeOval9楕円
    msoShapeHexagon10六角形
    msoShapeCross11十字形
    msoShapeRegularPentagon12ホームベース
    msoShapeCan13円柱
    msoShapeCube14直方体
    msoShapeBevel15斜角
    msoShapeFoldedCorner16メモ
    msoShapeSmileyFace17スマイル
    msoShapeDonut18ドーナツ
    msoShapeNoSymbol19禁止
    msoShapeBlockArc20アーチ
    msoShapeHeart21ハート
    msoShapeLightningBolt22稲妻
    msoShapeSun23太陽
    msoShapeMoon24
    msoShapeArc25円弧
    msoShapeDoubleBracket26大かっこ
    msoShapeDoubleBrace27中かっこ
    msoShapePlaque28ブローチ
    msoShapeLeftBracket29左大かっこ
    msoShapeRightBracket30右大かっこ
    msoShapeLeftBrace31左中かっこ
    msoShapeRightBrace32右中かっこ
    msoShapeRightArrow33右向きブロック矢印
    msoShapeLeftArrow34左向きブロック矢印
    msoShapeUpArrow35上向きブロック矢印
    msoShapeDownArrow36下向きブロック矢印
    msoShapeLeftRightArrow37左右ブロック矢印
    msoShapeUpDownArrow38上下 2 方向ブロック矢印
    msoShapeQuadArrow394 方向ブロック矢印
    msoShapeLeftRightUpArrow40左、右、および上の
    3 方向ブロック矢印
    msoShapeBentArrow4190°の曲線に続くブロック矢印
    msoShapeUTurnArrow42U 字型のブロック矢印
    msoShapeLeftUpArrow43左および上矢印の
    2方向ブロック矢印
    msoShapeBentUpArrow4490°の鋭角線に続くブロック
    msoShapeCurvedRightArrow45右カーブ ブロック矢印
    msoShapeCurvedLeftArrow46左カーブ ブロック矢印
    msoShapeCurvedUpArrow47上カーブ ブロック矢印
    msoShapeCurvedDownArrow48下カーブ ブロック矢印
    msoShapeStripedRightArrow49先にストライプの付いた
    右向きのブロック矢印
    msoShapeNotchedRightArrow50右向きのV字型矢印
    msoShapePentagon51ホームベース
    msoShapeChevron52山形
    msoShapeRightArrowCallout53右矢印の付いた吹き出し
    msoShapeLeftArrowCallout54左矢印の付いた吹き出し
    msoShapeUpArrowCallout55上矢印の付いた吹き出し
    msoShapeDownArrowCallout56下矢印の付いた吹き出し
    msoShapeLeftRightArrowCallout57左右矢印の付いた吹き出し
    msoShapeUpDownArrowCallout58上下のブロック矢印の付いた吹き出し
    msoShapeQuadArrowCallout594 方向矢印の付いた吹き出し
    msoShapeCircularArrow60180°の曲線に続くブロック矢印
    msoShapeFlowchartProcess61処理フローチャート記号
    msoShapeFlowchartAlternateProcess62代替処理フローチャート記号
    msoShapeFlowchartDecision63判断フローチャート記号
    msoShapeFlowchartData64データ フローチャート記号
    msoShapeFlowchartPredefinedProcess65定義済み処理フローチャート記号
    msoShapeFlowchartInternalStorage66内部記憶フローチャート記号
    msoShapeFlowchartDocument67書類フローチャート記号
    msoShapeFlowchartMultidocument68複数書類フローチャート記号
    msoShapeFlowchartTerminator69端子フローチャート記号
    msoShapeFlowchartPreparation70準備フローチャート記号
    msoShapeFlowchartManualInput71手操作入力フローチャート記号
    msoShapeFlowchartManualOperation72手作業フローチャート記号
    msoShapeFlowchartConnector73結合子フローチャート記号
    msoShapeFlowchartOffpageConnector74他ページ結合子フローチャート記号
    msoShapeFlowchartCard75カード フローチャート記号
    msoShapeFlowchartPunchedTape76せん孔テープ フローチャート記号
    msoShapeFlowchartSummingJunction77和接合フローチャート記号
    msoShapeFlowchartOr78論理和フローチャート記号
    msoShapeFlowchartCollate79照合フローチャート記号
    msoShapeFlowchartSort80分類フローチャート記号
    msoShapeFlowchartExtract81抜き出しフローチャート記号
    msoShapeFlowchartMerge82組み合わせフローチャート記号
    msoShapeFlowchartStoredData83記憶データ フローチャート記号
    msoShapeFlowchartDelay84論理積ゲート フローチャート記号
    msoShapeFlowchartSequentialAccessStorage85順次アクセス記憶フローチャート記号
    msoShapeFlowchartMagneticDisk86磁気ディスク フローチャート記号
    msoShapeFlowchartDirectAccessStorage87直接アクセス記憶フローチャート記号
    msoShapeFlowchartDisplay88表示フローチャート記号
    msoShapeExplosion189爆発
    msoShapeExplosion290爆発
    msoShape4pointStar914 ポイントの星
    msoShape5pointStar925 ポイントの星
    msoShape8pointStar938 ポイントの星
    msoShape16pointStar9416 ポイントの星
    msoShape24pointStar9524 ポイントの星
    msoShape32pointStar9632 ポイントの星
    msoShapeUpRibbon97リボンの端よりも
    上に中央面があるリボン
    msoShapeDownRibbon98リボンの端よりも
    下に中央面があるリボン
    msoShapeCurvedUpRibbon99上カーブリボン
    msoShapeCurvedDownRibbon100下カーブ リボン
    msoShapeVerticalScroll101縦巻き
    msoShapeHorizontalScroll102横巻き
    msoShapeWave103大波
    msoShapeDoubleWave104小波
    msoShapeRectangularCallout105四角形吹き出し
    msoShapeRoundedRectangularCallout106角丸四角形吹き出し
    msoShapeOvalCallout107円形吹き出し
    msoShapeCloudCallout108雲形吹き出し
    msoShapeLineCallout1109枠付きで水平の
    吹き出し線の付いた吹き出し
    msoShapeLineCallout2110斜めの直線の付いた吹き出し
    msoShapeLineCallout3111折れ線の付いた吹き出し
    msoShapeLineCallout4112U 字型の吹き出し線分の
    付いた吹き出し
    msoShapeLineCallout1AccentBar113水平の強調線の付いた吹き出し
    msoShapeLineCallout2AccentBar114斜めの吹き出し線と
    強調線の付いた吹き出し
    msoShapeLineCallout3AccentBar115折れた吹き出し線と
    強調線の付いた吹き出し
    msoShapeLineCallout4AccentBar116強調線およびU字型の
    吹き出し線分の付いた吹き出し
    msoShapeLineCallout1NoBorder117水平線の付いた吹き出し
    msoShapeLineCallout2NoBorder118枠および斜めの
    吹き出し線のない吹き出し
    msoShapeLineCallout3NoBorder119枠および折れた
    吹き出し線のない吹き出し
    msoShapeLineCallout4NoBorder120枠線およびU字型の
    吹き出し線分のない吹き出し
    msoShapeLineCallout1BorderandAccentBar121枠付きで
    水平の強調線の付いた吹き出し
    msoShapeLineCallout2BorderandAccentBar122枠、斜めの直線
    および強調線の付いた吹き出し
    msoShapeLineCallout3BorderandAccentBar123枠、折れた吹き出し線
    強調線の付いた吹き出し
    msoShapeLineCallout4BorderandAccentBar124枠線、強調線、およびU字型の
    吹き出し線分の付いた吹き出し
    msoShapeActionButtonCustom125既定の画像またはテキストのない
    ボタンマウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeActionButtonHome126[ホーム] ボタンマウスクリック
    およびマウスオーバー動作をサポートします
    msoShapeActionButtonHelp127[ヘルプ] ボタンマウスクリック
    およびマウスオーバー動作をサポートします
    msoShapeActionButtonInformation128[情報] ボタンマウスクリック
    およびマウスオーバー動作をサポートします
    msoShapeActionButtonBackorPrevious129[戻る] または [前へ] ボタン
    マウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeActionButtonForwardorNext130[進む] または [次へ] ボタンマウスクリック
    およびマウスオーバー動作をサポートします
    msoShapeActionButtonBeginning131[上旬] ボタンマウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeActionButtonEnd132[終了] ボタンマウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeActionButtonReturn133[戻る] ボタンマウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeActionButtonDocument134[文書] ボタンマウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeActionButtonSound135[サウンド] ボタンマウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeActionButtonMovie136[ビデオ] ボタンマウスクリックおよび
    マウスオーバー動作をサポートします
    msoShapeBalloon137吹き出し
    msoShapeNotPrimitive138サポートされていません
    msoShapeFlowchartOfflineStorage139オフライン記憶域フローチャート記号
    msoShapeLeftRightRibbon140両端に矢印が付いているリボン
    msoShapeDiagonalStripe141四角形から
    2 つの三角形部分が断ち切られた形斜線
    msoShapePie142円グラフの一片が切り取られた形
    msoShapeNonIsoscelesTrapezoid143台形
    msoShapeDecagon144十角形
    msoShapeHeptagon145七角形
    msoShapeDodecagon14612 角形
    msoShape6pointStar1476 ポイントの星
    msoShape7pointStar1487 ポイントの星
    msoShape10pointStar14910 ポイントの星
    msoShape12pointStar15012 ポイントの星
    msoShapeRound1Rectangle1511 つの角が丸くなっている四角形
    msoShapeRound2SameRectangle1521 辺を共有する
    2つの角が丸くなっている四角形
    msoShapeSnipRoundRectangle1541 つの角が欠けていて
    1つの角が丸くなっている四角形
    msoShapeSnip1Rectangle1551 つの角が欠けている四角形
    msoShapeSnip2SameRectangle1561 辺を共有する
    2つの角が欠けている四角形
    msoShapeRound2DiagRectangle157対角にある
    2つの角が丸くなっている四角形
    msoShapeSnip2DiagRectangle157対角にある
    2つの角が欠けている四角形
    msoShapeFrame158四角形の写真フレーム
    msoShapeHalfFrame159四角形の
    写真フレームを半分にした形
    msoShapeTear160水滴
    msoShapeChord161円と、円周上にある
    2点を円の内側を通って結ぶ直線円と弦
    msoShapeCorner162四角形の欠落部分がある四角形
    msoShapeMathPlus163加算記号「+」
    msoShapeMathMinus164減算記号「-」
    msoShapeMathMultiply165乗算記号「x」
    msoShapeMathDivide166除算記号「÷」
    msoShapeMathEqual167等号「=」
    msoShapeMathNotEqual168不等号「≠」
    msoShapeCornerTabs169四角形の形に沿って配置された4つの
    直角三角形4 つの切り取られた角部分
    msoShapeSquareTabs170四角形の輪郭を示す
    4つの小さな四角形
    msoShapePlaqueTabs171四角形の輪郭を示す
    4つの四分円
    msoShapeGear6172歯が 6 個ある歯車
    msoShapeGear9173歯が 9 個ある歯車
    msoShapeFunnel174じょうご
    msoShapePieWedge175四分円
    msoShapeLeftCircularArrow176反時計回りの方向を指す
    環状矢印
    msoShapeLeftRightCircularArrow177時計回りと反時計回りの両方を指す
    環状矢印両端に矢印が付いている
    曲線状の矢印
    msoShapeSwooshArrow178曲線状の矢印
    msoShapeCloud179雲の形
    msoShapeChartX180正方形を対角線で4分割した形
    msoShapeChartStar181正方形を垂線と対角線で6分割した形
    msoShapeChartPlus182正方形を垂直方向と
    水平方向に4分割した形
    msoShapeLineInverse183右上がりの斜線
  • 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にすることにより図形の塗りつぶしを透明色にしています。

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

スポンサーリンク

関連記事・広告