Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでコネクタだけを削除する

対象:Excel2010, Excel2013, Windows版Excel2016

「エクセル VBA コネクタ 全削除」
という検索キーワードで、アクセスがあることに気付きました

Excelでフローチャート的な図版を作成していた方による検索でしょうか。

[スポンサードリンク]

アクティブシート上のコネクタだけを削除するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブシート上のコネクタをすべて削除できます。
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

ErrHndl:
 MsgBox "図形を選択してから実行してください。"
End Sub

前述のアクティブシート上のコネクタをすべて削除するSubプロシージャとの違いは、For Each~Nextループを回す対象が、選択されている図形になっていることです。
  For Each shp In Selection.ShapeRange

図形が選択されていないときには「Selection.ShapeRange」で実行時エラーが発生してしまいますから、
   On Error GoTo ErrHndl
  ErrHndl:
   MsgBox "図形を選択してから実行してください。"
と、例外処理を入れてあります。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでコネクタだけを削除する

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.