[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロボタンの有効化/無効化について』(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.