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

スポンサーリンク
スポンサーリンク

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

VBAで直線やテキストボックス、図形を作成するには
Shapes【シェイプス】コレクションのメソッドを使用します。

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列挙型の定数で指定します。
名前説明
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)】
AddShapeメソッドで図形を追加します。
引数Typeは変数iで図形の定数の値1~183を繰り返し処理の
中で順次代入していきます。
引数Left、引数Top、引数Width、引数Heightは
Rangeオブジェクトの
Left、Top、Width、Heightプロパティを使用して
図形がセル内に収まるように
位置のポイントを取得しています。


7行目
【.Line.ForeColor.RGB = RGB(0, 0, 0)】
Withステートメントで指定したShapeオブジェクトに対して
Lineステートメントで線を引き
ForeColor【フォアカラー】ステートメントでRGB関数を使用して
黒に線を塗りつぶしています。


8行目
【.Fill.Visible = False】
Fillプロパティ(図形の塗りつぶし)を
ViSible = falseにすることにより
図形の塗りつぶしを透明色にしています。


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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク