[[20080923163852]] 『マクロボタンの有効化/無効化について』(vbvb) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロボタンの有効化/無効化について』(vbvb)
Excel VBA初心者です。よろしくお願いします。

マクロボタン2つ作成しました。

@データの整合性チェックボタン・・・データチェック。エラーのある場合はSheet2にエラー内容表示
Aテキスト出力ボタン・・・@ボタンで整合性チェックしたデータをテキスト出力

@ボタンを押下後、エラーがないことを確認して初めて、Aボタンを利用できるようにしたいのですがわかりません。教えてください。

以上、不明瞭な説明で申し訳ございませんが、よろしくお願いします。



2例示しますから、別々の新規ブックにて試してください。

 コマンドバー「フォーム」のボタンの場合。

 標準モジュールに

 '================================================================================
 Option Explicit
 Sub 初期設定()
    With ActiveSheet
       With .Buttons.Add([c3].Left, [c3].Top, [c3].Width * 2, [c3].Height * 2)
          .Name = "btn1"
          .Caption = "ボタン1"
          .OnAction = "ボタン1_Click"
          End With
       With .Buttons.Add([c7].Left, [c7].Top, [c7].Width * 2, [c7].Height * 2)
          .Name = "btn2"
          .Caption = "ボタン2"
          .OnAction = "ボタン2_Click"
          End With
       Call btn_enabled(.Buttons("btn2"), False)
       End With
 End Sub
 '========================================================================================
 Sub ボタン1_Click()
    MsgBox "ボタン2が使えるよ"
    Call btn_enabled(ActiveSheet.Buttons("btn2"), True)
 End Sub
 '========================================================================================
 Sub ボタン2_Click()
    MsgBox "ボタン2が使用不可"
    Call btn_enabled(ActiveSheet.Buttons(Application.Caller), False)
 End Sub
 '========================================================================================
 Sub btn_enabled(btn As Object, on_off As Boolean)
    With btn
       .Enabled = on_off
       .Font.ColorIndex = IIf(on_off, 0, 16)
       End With
 End Sub

 上記の「初期設定」というプロシジャーを実行してみてください。
 アクティブシートにコマンドバー「フォーム」のボタン(Excelコントロール)が二つ作成されます。
 ボタン2は最初使用不可になっています(クリックしても作動しません)。
 ボタン1えおクリックしてください。簡単なメッセージ表示後、ボタン2が使用可能になります。
 使用可能になったボタン2をクリックしてください。簡単なメッセージ表示後、再びボタン2が使用不可になります。

 ボタンの使用不可の設定は、コマンドバー「フォーム」のボタンの場合、面倒です。

 ****************************************************************************************

 コマンドバー「コントロールツールボックス」のコマンドボタンの場合。

 Sheet1のモジュールに

 '======================================================================================
 Option Explicit
 Sub 初期設定2()
    With ActiveSheet
       With .OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
                   Left:=[c3].Left, _
                   Top:=[c3].Top, _
                   Width:=[c3].Width * 2, _
                   Height:=[c3].Height * 2)
          .Name = "CommandButton1"
          .Object.Caption = "ボタン1"
          End With
       With .OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
                   Left:=[c7].Left, _
                   Top:=[c7].Top, _
                   Width:=[c7].Width * 2, _
                   Height:=[c7].Height * 2)
          .Name = "CommandButton2"
          .Object.Caption = "ボタン2"
          .Object.Enabled = False
          End With
       End With
 End Sub
 '======================================================================================
 Private Sub CommandButton1_Click()
    MsgBox "ボタン2が使えるよ"
    OLEObjects("CommandButton2").Object.Enabled = True
 End Sub
 '======================================================================================
 Private Sub CommandButton2_Click()
    MsgBox "ボタン2が使用不可"
    OLEObjects("CommandButton2").Object.Enabled = False
 End Sub

 上記の「初期設定2」というプロシジャーを実行してみてください。
 アクティブシートにコマンドバー「コントロールツールボックス」のコマンドボタンが二つ作成されます。

 プログラムの仕様は、コマンドバー「フォーム」のボタンの場合と同じです。

 初期設定2の操作は、手動操作で可能です(説明の都合上、コードで作成しましたが)。

 つまり、この事例を実現するには、コマンドバー「コントロールツールボックス」のコマンドボタンを
 使うほうが簡単ですよ!!

 確認してみてください。

 ichinose

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.