- ベストアンサー
シート上のボタン、オブジェクト名取得 or 変更
- Excel2003を使用している場合、UserForm上でシートにボタンを追加し、ボタンのオブジェクト名を取得したい場合、以下のコードを使用することができます。
- ボタンのオブジェクト名を取得するには、Withステートメントを使用してボタンを作成し、.Nameプロパティを使用してオブジェクト名を取得します。
- 例えば、以下のコードを使用することで、オブジェクト名を取得することができます。 With ActiveSheet.Buttons.Add(Range("H1").Left, _ Range("H1").Top, _ Range("H1:I1").Width, _ Range("H1").Height) MsgBox .Name End With
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「HiddenDataOpenMacro」は以下のような感じでいいと思います。 また、シートモジュールではなく、標準モジュールに記載してください。 Sub HiddenDataOpenMacro() With ActiveSheet.Buttons(ActiveSheet.Buttons.Count) If .Caption = "表示" Then .Caption = "非表示" ElseIf .Caption = "非表示" Then .Caption = "表示" Else MsgBox "違うよ!" End If End With End Sub 別回で、以下のようにしてもいいです。ただしエラー等で止まるとボタンは機能しなくなります。 上の方法のほうが固いかもしれません。 ’ユーザーフォームモジュールの一番上に記載 Public N As String ’ユーザーフォームに組み込む With ActiveSheet.Buttons.Add(Range("H1").Left, _ Range("H1").Top, _ Range("H1:I1").Width, _ Range("H1").Height) N = .Name .OnAction = "HiddenDataOpenMacro" .Characters.Text = "表示" .Characters.Font.Size = 8 End With ’標準モジュール Sub HiddenDataOpenMacro() If ActiveSheet.Buttons(N).Caption = "表示" Then ActiveSheet.Buttons(N).Caption = "非表示" ElseIf ActiveSheet.Buttons(N).Caption = "非表示" Then ActiveSheet.Buttons(N).Caption = "表示" Else MsgBox "違うよ!" End If End Sub
お礼
回答ありがとうございます! お蔭様で思ったとおりのプログラムを組むことが出来ました。 また、2通りの回答もしてくださり ありがとうございます! 後半に説明いただいたものは エラーが出てしまい上手くいきませんでしたが、 上のプログラムは正常に動きました! 思い通りの結果で、本当にうれしいです! ありがとうございました!