[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロボタンの有効化/無効化について』(vbvb)
マクロボタン2つ作成しました。
@データの整合性チェックボタン・・・データチェック。エラーのある場合はSheet2にエラー内容表示
Aテキスト出力ボタン・・・@ボタンで整合性チェックしたデータをテキスト出力
@ボタンを押下後、エラーがないことを確認して初めて、Aボタンを利用できるようにしたいのですがわかりません。教えてください。
以上、不明瞭な説明で申し訳ございませんが、よろしくお願いします。
コマンドバー「フォーム」のボタンの場合。
標準モジュールに
'================================================================================ 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.