[ PROGRAM MEMO ]

[ EZ-NET: プログラムメモ ]

■ 動的にボタンを配置し制御する

Microsoft Office 2000 対応?
Microsoft Excel 2000Win/X Mac 対応?

状況によりボタンがいくつ必要かが異なる場合に便利です。

<動的にボタンを配置する>
以下の例では、
シートにボタンを2つ配置して、

1つ目の名前を「BName」
ボタンラベル(キャプション)を「テスト」
ボタンを押したときに実行されるマクロを「Action1」

2つ目の名前を「BName2」
ボタンラベルを「テスト2」、マクロを「Action1」

と設定します。

Sub Macro1()

    ActiveSheet.Buttons.Add(10, 10, 40, 20).Select
    Selection.Name = "BName"
    Selection.Caption = "テスト"
    Selection.OnAction = "Action1"

    ActiveSheet.Buttons.Add(50, 10, 40, 20).Select
    Selection.Name = "BName2"
    Selection.Caption = "テスト2"
    Selection.OnAction = "Action1"
    
End Sub

<動的に配置したボタンの処理>
ボタン処理はあらかじめマクロとして準備しておきます。
ボタンにより処理が異なる場合は、マクロ内部で処理を分岐します。
この例では、押したボタンのラベルを「OK」に変更します。
押されたボタンの名称がApplication.Callerに入ってくるというわけです。

Sub Action1()
    
    'マクロ呼び出し元のラベル変更
    ActiveSheet.Buttons(Application.Caller).Caption = "OK"

End Sub

Last Update: 2004/01/29 22:34:38



 

カスタム検索

copyright © Tomohiro Kumagai @ EasyStyle G.K.
contact me: please from mail-form page.