0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel VBA:ボタンのプロパティを確認するコード集

Posted at

Excel VBA:ボタンのプロパティを確認するコード集

はじめに

Excel VBAで既存のマクロを解析する際、シート上のボタンにどのマクロが割り当てられているか確認したいことがあります。
本記事では、VBAのイミディエイトウィンドウで実行できる便利なコードをまとめました。

想定する読者

  • Excel VBAの既存マクロを解析・修正する必要がある方
  • ボタンとマクロの対応関係を調べたい方
  • ActiveXコントロールとフォームコントロールの違いを理解したい方

実行方法

すべてのコードはイミディエイトウィンドウCtrl+G)で実行してください。


基本編

1. シート内の全ボタンとマクロ名を一覧表示

' 指定シート内の全図形オブジェクトと割り当てられているマクロを表示
For Each shp In Worksheets("Sheet1").Shapes
    Debug.Print shp.Name & " : " & shp.OnAction
Next

出力例:

Button1 : Module1.ProcessData
Rectangle2 :
Picture3 : Sheet1.UpdateSummary

ポイント:

  • OnActionが空白の場合、マクロは割り当てられていません
  • シート名(Sheet1)は適宜変更してください

2. マクロが割り当てられているボタンのみ表示

' マクロが設定されているボタンだけを抽出
For Each shp In Worksheets("Sheet1").Shapes
    If shp.OnAction <> "" Then
        Debug.Print shp.Name & " → " & shp.OnAction
    End If
Next

ポイント:
不要な図形を除外して、マクロ付きボタンだけを確認できます。


3. 特定のボタンを選択して確認

' 指定した図形を選択(どのボタンか視覚的に確認)
Worksheets("Sheet1").Shapes("Button1").Select

使い方:
実行後、Excel画面で選択されたボタンを確認できます。


4. 特定のボタンに割り当てられているマクロ名を表示

' ボタン名を指定してマクロ名を確認
?Worksheets("Sheet1").Shapes("Button1").OnAction

出力例:

Module1.ProcessData

応用編

5. グループ化されたボタンの中身を確認

' グループ内の各パーツとマクロを表示
For Each shp In Worksheets("Sheet1").Shapes("Group1").GroupItems
    Debug.Print shp.Name & " : " & shp.OnAction
Next

出力例:

RoundedRectangle1 : Module1.Execute
Picture2 : Module1.Execute

ポイント:
複数の図形を組み合わせたボタンの場合に有効です。


6. グループ内の特定パーツのマクロを確認

' グループ内の特定パーツのマクロを直接確認
?Worksheets("Sheet1").Shapes("Group1").GroupItems("RoundedRectangle1").OnAction

7. キーワードでボタンを検索

' ボタンのテキストから検索(例:「実行」という文字を含むボタン)
For Each shp In Worksheets("Sheet1").Shapes
    On Error Resume Next
    If InStr(shp.TextFrame2.TextRange.Text, "実行") > 0 Then
        Debug.Print shp.Name & " : " & shp.OnAction
    End If
Next

ポイント:
キーワード(実行)を検索したい文字列に変更してください。


8. ボタンの詳細プロパティを確認

' ボタンの位置、サイズ、マクロなどを一括表示
With Worksheets("Sheet1").Shapes("Button1")
    Debug.Print "名前: " & .Name
    Debug.Print "マクロ: " & .OnAction
    Debug.Print "位置: (" & .Left & ", " & .Top & ")"
    Debug.Print "サイズ: " & .Width & " x " & .Height
End With

出力例:

名前: Button1
マクロ: Module1.ProcessData
位置: (100, 50)
サイズ: 120 x 30

フォームコントロール編

9. ラジオボタン・チェックボックスを検索

' OptionButtonを含む名前の図形を検索
For Each shp In Worksheets("Sheet1").Shapes
    On Error Resume Next
    If InStr(shp.Name, "Option") > 0 Then
        Debug.Print shp.Name & " : " & shp.OnAction
    End If
Next

10. フォームコントロールのリンクセルを確認

' フォームコントロール(Type=12)のリンクセルを表示
For Each shp In Worksheets("Sheet1").Shapes
    On Error Resume Next
    If shp.Type = 12 Then
        Debug.Print shp.Name & " → リンクセル: " & shp.ControlFormat.LinkedCell
    End If
Next

ポイント:
ラジオボタンやチェックボックスの選択状態が、どのセルに反映されるか確認できます。


ActiveXコントロール編

11. ActiveXコントロールの有無を確認

' シート内のActiveXコントロール数を確認
?Worksheets("Sheet1").OLEObjects.Count

出力:

  • 0 → ActiveXコントロールなし(通常の図形ボタン)
  • 1以上 → ActiveXコントロールあり

12. ActiveXコントロールの一覧を表示

' ActiveXコントロールの名前とタイプを表示
For Each obj In Worksheets("Sheet1").OLEObjects
    Debug.Print obj.Name & " (" & obj.progID & ")"
Next

出力例:

CommandButton1 (Forms.CommandButton.1)
ComboBox1 (Forms.ComboBox.1)

13. ActiveXコントロールのプロパティを確認(デザインモード必須)

' デザインモードONの状態で実行
With Worksheets("Sheet1").CommandButton1
    Debug.Print "Name: " & .Name
    Debug.Print "Caption: " & .Caption
    Debug.Print "Enabled: " & .Enabled
End With

注意:

  • ActiveXコントロールの場合、デザインモードをONにする必要があります
  • コントロール名(CommandButton1)は実際の名前に置き換えてください

トラブルシューティング

ボタンが右クリックできない場合

  1. 開発タブデザインモード をONにする
  2. ボタンを右クリック → マクロの割り当て で確認

グループ化されたボタンを調べる場合

' グループ全体の情報
?Worksheets("Sheet1").Shapes("Group1").OnAction

' グループ内の個別パーツ
For Each shp In Worksheets("Sheet1").Shapes("Group1").GroupItems
    Debug.Print shp.Name & " : " & shp.OnAction
Next

まとめ

  • イミディエイトウィンドウで手軽にボタン情報を確認できる
  • フォームコントロールとActiveXコントロールで確認方法が異なる
  • グループ化されたボタンはGroupItemsで個別パーツを調べる

参考


この記事が既存マクロの解析作業のお役に立てば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?