イベントのOnOffをボタンで切り替える.
1 目的
特定のイベントのオンオフを切り替えるワンタッチで切替えつつ,現在オンなのかオフなのかが分かるようにしたい.そこで,ボタンを設置して,ボタンの表示をその都度変えることにする.
2 コード
開発タブ,挿入,フォームコントロール,から「ボタン(フォームコントロール)」を挿入する.そして,コントロールを右クリックして選択状態にして,名前ボックスを使ってボタン名称を変更する.ここでは,「btnイベント可否切替」とした.オブジェクト名ではなく,ボタンのNameにbtnとつけるのはちょっとくどい.が,イベントっぽいプロシージャ名にして,btnとつけた方が分かりやすいと思うので,Nameにもbtnとつけることにした.
必要に応じて,ボタンのフォントなどを変更する.
Sub btnイベント可否切替_Click() Const EventOn As String = "ダブルクリックで貼付有効状態" Const EventOff As String = "ダブルクリックで貼付無効状態" With ActiveSheet.Buttons("btnイベント可否切替") If .Caption = EventOn Then Application.EnableEvents = False .Caption = EventOff Else Application.EnableEvents = True .Caption = EventOn End If End With End Sub
3 参考サイト
Sub ModeChange() With ActiveSheet.Shapes("切替ボタン").TextFrame.Characters If .Text = "塗りモード" Then .Text = "オフモード" Application.EnableEvents = False Else .Text = "塗りモード" Application.EnableEvents = True End If End With End Sub
フォームコントロールのボタンオブジェクトをVBAで捕まえる - 素人がExcelVBAによる「一人働き方改革」に挑むブログ
Microsoft Excelでフォーム/Active Xコントロールの名称確認方法 | 俺の開発研究所
を参考にして,「開発」⇒「コントロール」⇒「デザインモード」で切り替え、リボンメニューの「開発」⇒「コントロール」⇒「プロパティ」でフォームコントロールの(プッシュ)ボタンを選択したが,オブジェクト名もNameプロパティもアクティブシートのオブジェクト名とシート名を表示するのみだった.
しかし,実際には,Nameプロパティは(「Bottun 1」「ボタン 1」などに加えて)Excelの名前ボックスで指定したものになっている.フォームコントロールのプロパティを一括で見る方法は分からなかった.
したがって,オブジェクト名で記述する方法は分からなかったので,Bottuns(”ボタン名”)として捕まえることにした.