指定したシート内のActiveXコントロールをShapeで見つけてオブジェクト名に”QRコード”が含まれているものを削除する
Excelシート上に複数のQRコードを配置していて削除する場合.....
●一つ一つのQRコード(オブジェクト)を選択して削除する
ってなり、結構手間かかりませんか?!
この部屋の方法は予め配置したQRコードにわかりやすい名前をつけておいて、この方法を使うと簡単に複数のQRコードを削除することが可能でとっても便利ですよ!!
また、一番したの方にコメント欄があるからよかったら質問・感想などメッセージ入れてください
VBA-参照ライブラリを追加する(参照設定)
VBAプログラムで「バーコード」が使えるようにライブラリを参照設定で追加する
※ライブラリの追加は「ExcelシートにQRを追加」を参照してください
Excelシート内のQRオブジェクトを削除するプログラム
●●サブルーチンプログラム●●
標準モジュール(QrCtrl)にブログラムを記述
※標準モジュールの追加は「Excelシート内で指定した描画オブジェクトの名前を取得するプログラム」を参照してください
サブルーチンの内容
QrDelete(shtName As String)
引数 : shtName=シート名
戻り:True
※「VBA:ExcelシートにQRを追加」で名前をつけて作成したQRコードが対象
※「VBA:描画オブジェクトの取得」の描画オブジェクトタイプの一覧表を参照
▼プログラム▼
Public Function QrDelete(shtName As String)
Dim Ret As Boolean
Ret = True
'----------------------------------------
Dim shp As Shape
Thisworkbook.Worksheets(shtName).Active ’指定シートをアクティブにします
'----------------------------------------
'msoOLEControlObject=QRのOLEコントロールオブジェクト
'----------------------------------------
'指定シート内の描画オブジェクトの全てを検索
For Each shp In Thisworkbook.Worksheets(shtName).Shapes
'----------------------------------------
'描画オブジェクトのOLEコントロールを見つける
If shp.Type = msoOLEContorlObject Then
Debug.Print(shp.Name)
If InStr(shp.Name, "QRコード")<>0 Then 'オブジェクト名に"QRコード"が含まれている
Thisworkbook.Worksheets(shtName).Shapes.Range(Array(shp.Name)).Select 'オブジェクトを選択する
Selection.Delete '選択したオブジェクトを削除する
Endif
Endif
Next shp
'----------------------------------------
QrDelete = Ret
'----------------------------------------
End Function
呼び出すプログラム(例)
サブルーチンプログラムが出来たので呼びだすコマンドボタンを配置してプログラムを記述する
コマンドボタンがクリックされた時に実行されるプログラム
「CommandButton6」
※ボタンの配置方法は 「VBA:描画オブジェクトの名前取得」を参照してください
シート(Sheet1)のセルE13~G13に配置したQRを削除する
▼プログラム▼
Dim ret As Boolean
ret = QrDelete("Sheet1")
プログラムの実行
セルE13~G13のQRが削除された
コメント