シート上のボタン、オブジェクト名取得 or 変更
探してみたのですが、
良い方法が見当たらないため質問させて頂きます。
Excel2003を使用しています。
UserForm上で、シートにボタンを追加し、
マクロを登録するプログラムを組みました。
--------------------------------------
With ActiveSheet.Buttons.Add(Range("H1").Left, _
Range("H1").Top, _
Range("H1:I1").Width, _
Range("H1").Height)
.OnAction = "HiddenDataOpenMacro"
.Characters.Text = "表示"
.Characters.Font.Size = 8
End With
---------------------------------------
この場合、H1の部分に新しいボタンが登録されます。
作成したボタンのオブジェクト名が知りたいのですが、
どのようにしたら分かるでしょうか?
もしくは、HiddenDataOpenMacro上に
どういうプログラムを組めばいいのか教えて頂きたいです。
---------------------------------------
Sub HiddenDataOpenMacro()
If ActiveSheet.Commandbuton1.Caption = "表示" Then
ActiveSheet.CommandButton1.Caption = "非表示"
ActiveSheet.Rows.Hidden = False
ElseIf ActiveSheet.Commandbuton1.Caption = "非表示" Then
ActiveSheet.CommandButton1.Caption = "表示"
ActiveSheet.Rows("2:20").Hidden = True
Else
MsgBox "違うよ!"
End If
End Sub
------------------------------------------
ためしに、上記マクロを考えてみました。
シート上には、マクロ登録してあるボタンがもう1つあります。
やりたいことはシンプルでして、
ボタンに表示されている文字列が”表示”だった場合、
ボタンに表示されている文字列を”非表示”に変更
また、非表示にしていたデータを表示にします。
ボタンの文字列が”非表示”だった場合には、
文字列を”表示”に変更し、
指定部分を非表示にします。
標準モジュールでの操作ではできませんでした。
(メソッドをサポートしてませんとエラーが出ます。)
シートは毎回新しく作り直すため、
シートにプログラムを書くのはもったいない?気がします。
どうにか方法は無いでしょうか?
ボタンを作成するときに、オブジェクト名まで指定できれば
良いかと思うのですが・・・
話がごちゃごちゃになってきましたので、
やりたいことをまとめます。
●シートにある、指定文字列が書いてあるボタンのオブジェクト名を取得
●ボタン作成時にオブジェクト名を設定する方法
●If ActiveSheet.Commandbuton1.Caption = "表示" Then ではない他の書き方
以上、よろしくお願い致します!
お礼
ありがとうございました。