• ベストアンサー

フォームの無効化

Excel2002にてマクロを使用しています。 新規で作成したbookに フォームのボタンを2つ配置して 1を押すと2を無効化 2を押すと1を無効化 したいのですが、どうもうまくいきません。 Enabledプロパティみたいのを探しているんですが なぜか出てきません・・・ Visibleでやったら消えてしまいました・・・ 書き方としては ActiveSheet.Shapes("Button 1").・・・ でいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

MEITO
質問者

お礼

本当は元々あったExcelを手直しするもので 説明用に上の文章を書きました・・・ わかりにくかったらすいませんでした。 Enabledは使えないんですね。やっぱり。 説明の方法は参考にさせていただきます。 ありがとうございましたm(__)m