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

スポンサーリンク

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

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

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

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

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

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

Left【レフト】プロパティ

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

Left【レフト】プロパティの書式と設定値の説明

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


Top【トップ】プロパティ

行1の上端を0として、図形の上端の位置の取得または設定をするには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションの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【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションの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【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのHeight【ハイト】プロパティを使用します。

Height【ハイト】プロパティの書式と設定値の説明

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


Width【ワイズ】プロパティ

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

Width【ワイズ】プロパティの書式と設定値の説明

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

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

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

実行結果


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

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

Visible【ビジブル】プロパティの書式と設定値の説明

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


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

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

IncrementLeft【インクリメントレフト】の書式と設定値の説明

オブジェクト.IncrementLeft(Increment)


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

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

IncrementTop【インクリメントトップ】の書式と設定値(引数)の説明

オブジェクト.IncrementTop(Increment)


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

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

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

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

ScaleHeight【スケールハイト】メソッドの書式と設定値(引数)の説明

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

  • オブジェクト(必須)
    Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。
  • Factor【ファクター】(必須)
    現在の高さに対する変更後の高さの比率(倍率)を指定します。例えば、高さを現在の高さの倍にしたい場合は2を指定します。単精度浮動小数点型 (Single)の値で指定します。
  • RelativeToOriginalSize【レラティブトゥオリジナルザイズ】(必須)
    元の図形の高さか現在の図形の高さのどちらの高さを基準として拡大、縮小するかの判断をブール型の値で指定します。現在の図形を基準として拡大または縮小する場合はmsoFalseを指定します。元の図形を基準として拡大または縮小する場合は msoTrueを指定(図形は使用不可)
  • Scale【スケール】(省略可)
    図形を拡大または縮小するときに固定する部分をMsoScaleFrom クラスの定数のいずれかで指定します。
MsoScaleFrom クラスの定数
定数内容
msoScaleFromTopLeft0図形の左上隅の位置が保持されます。(既定値)
msoScaleFromMiddle1図形の中心の位置が保持されます。
msoScaleFromBottomRight2図形の右下隅の位置が保持されます。

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

指定した図形の幅を指定した倍率で現在の幅から拡大、縮小するには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションの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【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのDelete【デリート】メソッドを使用します。

Delete【デリート】メソッドの書式と設定値(引数)の説明

オブジェクト.Delete

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

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

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


Group【グループ】メソッド

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

Group【グループ】メソッドの書式と設定値の説明

オブジェクト.Group

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


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

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

UnGroup【アングループ】メソッドの書式と設定値の説明

オブジェクト.UnGroup

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


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

スポンサーリンク

関連記事・広告