- ベストアンサー
フォームの無効化
Excel2002にてマクロを使用しています。 新規で作成したbookに フォームのボタンを2つ配置して 1を押すと2を無効化 2を押すと1を無効化 したいのですが、どうもうまくいきません。 Enabledプロパティみたいのを探しているんですが なぜか出てきません・・・ Visibleでやったら消えてしまいました・・・ 書き方としては ActiveSheet.Shapes("Button 1").・・・ でいいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
フォームのボタンにEnabledはないと思います。 『ボタン 1』、『ボタン 2』、『ボタン 3』をSheet1に貼り付けました。 『ボタン 1』、『ボタン 2』は質問の動作をするボタンです。 『ボタン 3』は『ボタン 1』、『ボタン 2』を共に押せるようにするボタンです。 『ボタン 1』、『ボタン 2』にはマクロ『EnabledChange』を割り当てておき、『ボタン 1』、『ボタン 2』のどちらかを押せば、他方のマクロを変えています。 Application.Caller = "ボタン 1" の "ボタン 1" はシーとの左上に表示されるボタンの名前です。 初期状態(Book立ち上げ時)が分からない? のと、 何故コントロールツールボックスのボタンを使わない? コントロールツールボックスのトグルボタンなどは使えない?というような疑問が残りました。 標準モジュールに貼り付けます。 ↓ Public BT1_Enabled As Boolean 'ボタン1の使用可否 Public BT2_Enabled As Boolean 'ボタン2の使用可否 '2つのボタン(フォームのボタン)に割り当てるマクロ Sub EnabledChange() If Application.Caller = "ボタン 1" Then Worksheets("Sheet1").Shapes("Button 2").OnAction = "Pass" MsgBox "ボタン 1 の処理をします" ElseIf Application.Caller = "ボタン 2" Then Worksheets("Sheet1").Shapes("Button 1").OnAction = "Pass" MsgBox "ボタン 2 の処理をします" End If End Sub '無効にしたボタンに割り当てたマクロ Sub Pass() '当然、何も書かなければ何もしない MsgBox "このボタンでは処理できません" End Sub '2つのボタンをどちらも有効にする(蛇足?) Sub EnabledTrue() BT1_Enabled = True Worksheets("Sheet1").Shapes("Button 1").OnAction = "EnabledChange" BT2_Enabled = True Worksheets("Sheet1").Shapes("Button 2").OnAction = "EnabledChange" End Sub
お礼
本当は元々あったExcelを手直しするもので 説明用に上の文章を書きました・・・ わかりにくかったらすいませんでした。 Enabledは使えないんですね。やっぱり。 説明の方法は参考にさせていただきます。 ありがとうございましたm(__)m