イベントの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(”ボタン名”)として捕まえることにした.