「エクセル VBA コネクタ 全削除」
という検索キーワードで、アクセスがあることに気付きました
Excelでフローチャート的な図版を作成していた方による検索でしょうか。
アクティブシート上のコネクタだけを削除するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブシート上のコネクタをすべて削除できます。Dim shp As Shape
For Each shp In ActiveSheet.Shapes
With shp
If .Connector Then
If .ConnectorFormat.BeginConnected Or _
.ConnectorFormat.EndConnected Then .Delete
End If
End With
Next shp
End Sub
サンプルマクロの解説
アクティブシート上の全図形に対してFor Each~Nextループを回して、
For Each shp In ActiveSheet.Shapes
ShapeオブジェクトのConnectorプロパティで、
図形がコネクタかどうか判定して、
With shp
If .Connector Then
ConnectorFormatオブジェクトのBeginConnectedプロパティと
EndConnectedプロパティを調べ、
始端または終端が図形につながっているときにShape.Deleteメソッドで削除しています。
If .ConnectorFormat.BeginConnected Or _
.ConnectorFormat.EndConnected Then .Delete
選択図形からコネクタだけを削除するサンプルマクロ
以下のSubプロシージャを実行すると、選択されている図形からコネクタだけを削除できます。
Sub 選択図形からコネクタだけを削除する()
On Error GoTo ErrHndl
Dim shp As Shape
For Each shp In Selection.ShapeRange
With shp
If .Connector Then
If .ConnectorFormat.BeginConnected Or _
.ConnectorFormat.EndConnected Then .Delete
End If
End With
Next shp
Exit Sub
MsgBox "図形を選択してから実行してください。"
End Sub
前述のアクティブシート上のコネクタをすべて削除するSubプロシージャとの違いは、For Each~Nextループを回す対象が、選択されている図形になっていることです。
For Each shp In Selection.ShapeRange
図形が選択されていないときには「Selection.ShapeRange」で実行時エラーが発生してしまいますから、
On Error GoTo ErrHndl
ErrHndl:
MsgBox "図形を選択してから実行してください。"
と、例外処理を入れてあります。
- Newer:行数をカウントする-ROWS関数
- Older:Rangeオブジェクトに対してRangeプロパティを使う?
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでコネクタだけを削除する