図形(シェイプ)の設定や操作をする方法
ワークシート上に作成されている図形の移動、サイズの変更、図形の削除、複数の図形のグループ化などの図形の操作は以下のプロパティやメソッドを使用します。
図形(シェイプ)の設定をするプロパティ一覧
プロパティ | 内容 |
---|---|
Left【レフト】 | 図形の左端の位置を取得または設定します。 |
Top【トップ】 | 図形の上端の位置を取得または設定します。 |
Rotation【ローテーション】 | 図形の回転角度を取得または設定します。 |
Height【ハイト】 | 図形の高さを取得または設定します。 |
Width【ワイズ】 | 図形の幅を取得または設定します。 |
Visible【ビジブル】 | 図形の表示と非表示を切り替えます。 |
図形(シェイプ)の操作をするメソッド一覧
メソッド | 内容 |
---|---|
IncrementLeft【インクリメントレフト】 | 図形を現在位置を基準に横方向に移動させます。 |
IncrementTop【インクリメントトップ】 | 図形を現在位置を基準に縦方向に移動させます。 |
ScaleHeight【スケールハイト】 | 図形の現在高さを基準に図形の高さを変更します。 |
ScaleWidth【スケールワイズ】 | 図形の現在幅を基準に図形の幅を変更します。 |
Delete【デリート】 | 選択した図形を削除します。 |
Group【グループ】 | 複数の図形をグループ化して一つの図形にします。 |
UnGroup【アングループ】 | グループ化された図形のグループを解除します。 |
Left【レフト】プロパティ
A列の左端を0として、図形の左端の位置の取得または設定をするには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのLeft【レフト】プロパティを使用します。
Left【レフト】プロパティの書式と設定値の説明
【取得】
オブジェクト.Left
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Left = 設定値
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。 - 設定値(必須)
A列の左端からの位置をポイント単位(1ポイント約0.35ミリ)で指定します。
ポイントはセルの行の高さの単位と同じです。セルの位置に合わせてポイントを取得するにはRange【レンジ】オブジェクトのLeft【レフト】プロパティでポイントを取得します。
Top【トップ】プロパティ
行1の上端を0として、図形の上端の位置の取得または設定をするには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのTop【トップ】プロパティを使用します。
Top【トップ】プロパティの書式と設定値の説明
【取得】
オブジェクト.Top
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Top = 設定値
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイオウレンジ】コレクションを指定します。 - 設定値(必須)
行1の上端からの位置をポイント単位(1ポイント約0.35ミリ)で指定します。ポイントはセルの行の高さの単位と同じです。セルの位置に合わせてポイントを取得するにはRange【レンジ】オブジェクトの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 = 設定値
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。 - 設定値(必須)
図形の中心を起点に時計回りで回転させる度数を指定します。
インデックス番号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 = 設定値
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。 - 設定値(必須)
図形上端からの高さをポイント単位(1ポイント約0.35ミリ)で指定します。ポイントはセルの行の高さの単位と同じです。セルの位置に合わせてポイントを取得するにはRange【レンジ】オブジェクトのTop【トップ】プロパティでポイントを取得します。
Width【ワイズ】プロパティ
指定した図形の幅を取得または設定するには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのWidth【ワイズ】プロパティを使用します。
Width【ワイズ】プロパティの書式と設定値の説明
【取得】
オブジェクト.Width
【戻り値】単精度浮遊小数点型(Single)の値
【設定】
オブジェクト.Width = 設定値
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。 - 設定値(必須)
図形左端からの幅をポイント単位(1ポイント約0.35ミリ)で指定します。ポイントはセルの行の高さの単位と同じです。セルの位置に合わせてポイントを取得するにはRange【レンジ】オブジェクトのLeft【レフト】プロパティでポイントを取得します。
インデックス番号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 = 設定値
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。 - 設定値(必須)
図形を表示するかしないかを表す、MsoTriState 列挙の定数で指定します。図形を一時的に非表示にするには、MsoFalse非表示にされた図形を再表示するには、MsoTrueを指定します。
IncrementLeft【インクリメントレフト】メソッド
指定した図形を現在の位置から横方向(水平)に相対的に移動させるには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのIncrementLeft【インクリメントレフト】メソッドを使用します。
IncrementLeft【インクリメントレフト】の書式と設定値の説明
オブジェクト.IncrementLeft(Increment)
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。 - Increment【インクリメント】(必須)
横方向の移動距離をポイント単位(1ポイント約0.35ミリ)で指定します。正の値を指定すると右方向に移動し、負の値を指定すると左方向に移動します。単精度浮動小数点型 (Single)の値で指定します。
IncrementTop【インクリメントトップ】メソッド
指定した図形を現在の位置から縦方向(垂直)に相対的に移動させるには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのIncrementTop【インクリメントトップ】メソッドを使用します。
IncrementTop【インクリメントトップ】の書式と設定値(引数)の説明
オブジェクト.IncrementTop(Increment)
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。 - Increment【インクリメント】(必須)
縦方向の移動距離をポイント単位(1ポイント約0.35ミリ)で指定します。正の値を指定すると下方向に移動し、負の値を指定すると上方向に移動します。単精度浮動小数点型 (Single)の値で指定します。
インデックス番号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 クラスの定数のいずれかで指定します。
定数 | 値 | 内容 |
---|---|---|
msoScaleFromTopLeft | 0 | 図形の左上隅の位置が保持されます。(既定値) |
msoScaleFromMiddle | 1 | 図形の中心の位置が保持されます。 |
msoScaleFromBottomRight | 2 | 図形の右下隅の位置が保持されます。 |
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
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションを指定します。
アクティブシート上の図形の内、四角形だけ削除するコード例
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
- オブジェクト(必須)
ShapeRange【シェイプレンジ】コレクションを指定します。
※Group【グループ】メソッドは少なくとも2つ以上の図形が参照されていないとエラーになります。必ず2つ以上の図形を指定してください。
UnGroup【アングループ】メソッド
グループ化された図形をグループを解除するには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションのUnGroup【アングループ】メソッドを使用します。
UnGroup【アングループ】メソッドの書式と設定値の説明
オブジェクト.UnGroup
- オブジェクト(必須)
Shape【シェイプ】オブジェクトまたはShapeRange【シェイオウレンジ】コレクションを指定します。
サンプルコードは複数の図形(シェイプ)をグループ化するをご覧ください。
以上で、図形(シェイプ)の設定や操作をするプロパティとメソッドについての解説を終了します。ありがとうございました。