Excel VBA 図形(シェイプ)の設定や操作をするプロパティとメソッド

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

図形(シェイプ)の設定や操作をする方法

ワークシート上に作成されている図形の
移動、サイズの変更、図形の削除、複数の図形のグループ化
などの図形の操作は以下のプロパティやメソッドを使用します。

図形(シェイプ)の設定をするプロパティ一覧

  • Left【レフト】プロパティ
    図形の左端の位置を取得または設定します。
  • Top【トップ】プロパティ
    図形の上端の位置を取得または設定します。
  • Rotation【ローテーション】プロパティ
    図形の回転角度を取得または設定します。
  • Height【ハイト】プロパティ
    図形の高さを取得または設定します。
  • Width【ワイズ】プロパティ
    図形の幅を取得または設定します。
  • Visible【ビジブル】プロパティ
    図形の表示と非表示を切り替えます。

図形(シェイプ)の操作をするメソッド一覧

  • IncrementLeft【インクリメントレフト】メソッド
    図形を現在位置を基準に横方向に移動させます。
  • IncrementTop【インクリメントトップ】メソッド
    図形を現在位置を基準に縦方向に移動させます。
  • ScaleHeight【スケールハイト】メソッド
    図形の現在高さを基準に図形の高さを変更します。
  • ScaleWidth【スケールワイズ】メソッド
    図形の現在幅を基準に図形の幅を変更します。
  • Delete【デリート】メソッド
    選択した図形を削除します。
  • Group【グループ】メソッド
    複数の図形をグループ化して一つの図形にします。
  • UnGroup【アングループ】メソッド
    グループ化された図形のグループを解除します。

以上のプロパティやメソッドについての解説をしていきます。

Left【レフト】プロパティ

A列の左端を0として
図形の左端の位置の取得または設定をするには
Shapeオブジェクトの
Left【レフト】プロパティを使用します。

Left【レフト】プロパティの書式

【取得】
オブジェクト.Left
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Left = 設定値


設定値の説明


Top【トップ】プロパティ

行1の上端を0として
図形の上端の位置の取得または設定をするには
Shapeオブジェクトの
Top【トップ】プロパティを使用します。

Top【トップ】プロパティの書式

【取得】
オブジェクト.Top
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Top = 設定値


設定値の説明

インデックス番号1の図形をB3セルの左端上の位置に移動するコード例

Sub 図形移動()
With ActiveSheet.Shapes(1)
.Left = Range("B3").Left
.Top = Range("B3").Top
End With
End Sub

Rotation【ローテーション】プロパティ

指定した図形の中心位置を基準に
図形の角度を度単位で取得または設定をするには
Shapeオブジェクトの
Rotation【ローテーション】プロパティを使用します。

Rotation【ローテーション】プロパティの書式

【取得】
オブジェクト.Rotation
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Rotation = 設定値


設定値の説明

インデックス番号1の図形を1秒毎に90度回転させるコード例

Sub 図形回転()
Dim i As Long
For i = 90 To 360 Step 90
ActiveSheet.Shapes(1).Rotation = i
Application.Wait Now + TimeValue("00:00:01")
Next i
End Sub

Height【ハイト】プロパティ

指定した図形の高さを取得または設定するには
Shapeオブジェクトの
Height【ハイト】プロパティを使用します。

Height【ハイト】プロパティの書式

【取得】
オブジェクト.Height
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Height = 設定値


設定値の説明


Width【ワイズ】プロパティ

指定した図形の幅を取得または設定するには
Shapeオブジェクトの
Width【ワイズ】プロパティを使用します。

Width【ワイズ】プロパティの書式

【取得】
オブジェクト.Width
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Width = 設定値


設定値の説明

インデックス番号1の図形を現在の大きさの2倍の大きさに変更するコード例

Sub 図形拡大()
With ActiveSheet.Shapes(1)
.Height = .Height * 2
.Width = .Width * 2
End With
End Sub

Visible【ビジブル】プロパティ

指定した図形の幅を取得または設定するには
Shapeオブジェクトの
Visible【ビジブル】プロパティを使用します。

Visible【ビジブル】プロパティの書式

【取得】
オブジェクト.Visible
【戻り値】ブール型(Boolean)の値
【設定】
オブジェクト.Visible = 設定値


設定値の説明

  • オブジェクト(必須)
    Shapeオブジェクトまたは、ShapeRangeコレクションを指定します。
  • 設定値(必須)
    図形を表示するかしないかを表す、MsoTriState 列挙の定数で指定します。
    図形を一時的に非表示にするには、MsoFalse
    非表示にされた図形を再表示するには、MsoTrueを指定します。

IncrementLeft【インクリメントレフト】メソッド

指定した図形を現在の位置から横方向(水平)に相対的に移動させるには
Shapeオブジェクトの
IncrementLeft【インクリメントレフト】メソッドを使用します。

IncrementLeft【インクリメントレフト】の書式

オブジェクト.IncrementLeft(Increment)


設定値の説明

  • オブジェクト(必須)
    Shapeオブジェクトまたは、ShapeRangeコレクションを指定します。
  • Increment【インクリメント】(必須)
    横方向の移動距離をポイント単位(1ポイント約0.35ミリ)で指定します。
    正の値を指定すると右方向に移動し、負の値を指定すると左方向に移動します。

    単精度浮動小数点型 (Single)の値で指定します。

IncrementTop【インクリメントトップ】メソッド

指定した図形を現在の位置から縦方向(垂直)に相対的に移動させるには
Shapeオブジェクトの
IncrementTop【インクリメントトップ】メソッドを使用します。

IncrementTop【インクリメントトップ】の書式

オブジェクト.IncrementTop(Increment)


設定値の説明

  • オブジェクト(必須)
    Shapeオブジェクトまたは、ShapeRangeコレクションを指定します。
  • Increment【インクリメント】(必須)
    縦方向の移動距離をポイント単位(1ポイント約0.35ミリ)で指定します。
    正の値を指定すると下方向に移動し、負の値を指定すると上方向に移動します。

    単精度浮動小数点型 (Single)の値で指定します。

インデックス番号1の図形を約1秒おきに20回10ポイントずつ移動させるコード例

Sub 図形移動2()
Dim i As Long
With ActiveSheet.Shapes(1)
For i = 1 To 20
.IncrementLeft (10)
Application.Wait Now + TimeValue("00:00:01")
Next i
For i = 1 To 20
.IncrementTop (10)
Application.Wait Now + TimeValue("00:00:01")
Next i
For i = 1 To 20
.IncrementLeft (-10)
Application.Wait Now + TimeValue("00:00:01")
Next i
For i = 1 To 20
.IncrementTop (-10)
Application.Wait Now + TimeValue("00:00:01")
Next i
End With
End Sub

ScaleHeight【スケールハイト】メソッド

指定した図形の高さを指定した倍率で
現在の高さから拡大、縮小するには
Shapeオブジェクトの
ScaleHeight【スケールハイト】メソッドを使用します。

ScaleHeight【スケールハイト】メソッドの書式

[]内は省略可能です。
オブジェクト.ScaleHeight(Factor, RelativeToOriginalSize[, Scale])


設定値(引数)の説明

  • オブジェクト(必須)
    Shapeオブジェクトまたは、ShapeRangeコレクションを指定します。
  • Factor【ファクター】(必須)
    現在の高さに対する変更後の高さの比率(倍率)を指定します。
    例えば、高さを現在の高さの倍にしたい場合は2を指定します。
    単精度浮動小数点型 (Single)の値で指定します。
  • RelativeToOriginalSize【レラティブトゥオリジナルザイズ】(必須)
    元の図形の高さか現在の図形の高さのどちらの高さを
    基準として拡大、縮小するかの判断をブール型の値で指定します。

    現在の図形を基準として拡大または縮小する場合はmsoFalseを指定します。
    元の図形を基準として拡大または縮小する場合は msoTrueを指定(図形は使用不可)
  • Scale【スケール】(省略可)
    図形を拡大または縮小するときに固定する部分を
    MsoScaleFrom クラスの定数のいずれかで指定します。
MsoScaleFrom クラスの定数
定数内容
msoScaleFromTopLeft0図形の左上隅の位置が保持されます。(既定値)
msoScaleFromMiddle1図形の中心の位置が保持されます。
msoScaleFromBottomRight2図形の右下隅の位置が保持されます。

ScaleWidth【スケールワイズ】メソッド

指定した図形の幅を指定した倍率で
現在の幅から拡大、縮小するには
Shapeオブジェクトの
ScaleWidth【スケールワイズ】メソッドを使用します。

ScaleWidth【スケールワイズ】メソッドの書式

[]内は省略可能です。
オブジェクト.ScaleWidth(Factor, RelativeToOriginalSize[, Scale])


設定値(引数)の説明

  • オブジェクト(必須)
    Shapeオブジェクトまたは、ShapeRangeコレクションを指定します。
  • Factor【ファクター】(必須)
    現在の幅に対する変更後の幅の比率(倍率)を指定します。
    例えば、幅を現在の幅の倍にしたい場合は2を指定します。
    単精度浮動小数点型 (Single)の値で指定します。
  • RelativeToOriginalSize【レラティブトゥオリジナルザイズ】(必須)
    元の図形の幅か現在の図形の幅のどちらの幅を
    基準として拡大、縮小するかの判断をブール型の値で指定します。

    現在の図形を基準として拡大または縮小する場合はmsoFalseを指定します。
    元の図形を基準として拡大または縮小する場合は msoTrueを指定(図形は使用不可)
  • Scale【スケール】(省略可)
    図形を拡大または縮小するときに固定する部分を
    上記のMsoScaleFrom クラスの定数のいずれかで指定します。

インデックス番号1の図形を現在のサイズから2倍に拡大するコード例

Sub 図形拡大()
With ActiveSheet.Shapes(1)
.ScaleHeight 2, msoFalse, 1
.ScaleWidth 2, msoFalse, 1
End With
End Sub

インデックス番号1の図形を現在のサイズから半分に縮小するコード例

Sub 図形縮小()
With ActiveSheet.Shapes(1)
.ScaleHeight 0.5, msoFalse, 1
.ScaleWidth 0.5, msoFalse, 1
End With
End Sub

Delete【デリート】メソッド

指定した図形を削除するには
Shapeオブジェクトの
Delete【デリート】メソッドを使用します。

Delete【デリート】メソッドの書式

オブジェクト.Delete


設定値(引数)の説明

アクティブシート上の図形の内、四角形だけ削除するコード例

Sub 特定図形削除()
Dim 図形 As Shape
For Each 図形 In ActiveSheet.Shapes
If 図形.AutoShapeType = msoShapeRectangle Then
図形.Delete
End If
Next
End Sub

※AutoShapeTypeについては
図形を作成するメソッドをご覧ください。


Group【グループ】メソッド

複数の図形をグループ化するには
Shapeオブジェクトの
Group【グループ】メソッドを使用します。
複数の図形をグループ化して1つの図形を表す
Shapeオブジェクトを返します。

Group【グループ】メソッドの書式

オブジェクト.Group


設定値(引数)の説明

※Group【グループ】メソッドは少なくとも2つ以上の図形が参照されていないと
エラーになります。必ず2つ以上の図形を指定してください。


UnGroup【アングループ】メソッド

グループ化された図形をグループを解除するには
Shapeオブジェクトの
UnGroup【アングループ】メソッドを使用します。

UnGroup【アングループ】メソッドの書式

オブジェクト.UnGroup


設定値(引数)の説明

サンプルコードは複数の図形(シェイプ)をグループ化するをご覧ください。


以上で
図形(シェイプ)の設定や操作をするプロパティとメソッドについての
解説を終了します。
ありがとうございました。

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

フォローする

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