チェックボックスの制御
チェックボックスがONの場合、文字を太くする。
チェックボックスがOFFの場合、文字を標準にする。
【EXCEL VBA】チェックボックスがONの場合に文字を太くする(1)のようにClickイベント1つずつに処理を記述しても出来ますが、ActiveXコントロールは、クラスモジュールを使用できるので、今回は、クラスを使用したサンプルとなっております。
ActiveXコントロールを使用する
シートにチェックボックスを配置
「開発」タブ→「挿入」選択→「ActiveXコントロール」から「チェックボックス」を選択します。
シートに配置します。
Visual Basic Editorの起動
対象行すべてにチェックボックスの配置が終わったら、右クリック→「コードの表示」を選択し、VBE(Visual Basic Editor)を起動します。
↓
サンプルプログラム
標準モジュールに入力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
'******* ActiveXコントロール用モジュール ******* '*************************************************** '【処理概要】 ' CheckBoxEventオブジェクトを生成する。 ' 「ActiveXコントロール」シートに設定されているチェックボックスの数だけオブジェクトを生成する。 '*************************************************** Public pb_CheckBoxEvents As Collection Public Sub Sample() Dim m_Control As OLEObject, m_CheckBoxEvent As CheckBoxEvent Set pb_CheckBoxEvents = New Collection For Each m_Control In ActiveSheet.OLEObjects If m_Control.progID Like "*CheckBox*" Then Set m_CheckBoxEvent = New CheckBoxEvent Set m_CheckBoxEvent.Control = m_Control.Object Call pb_CheckBoxEvents.Add(m_CheckBoxEvent) End If Next End Sub |
クラスモジュールに入力(オブジェクト名:CheckBoxEvent)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
'******* ActiveXコントロール用クラス ******* '*************************************************** '【処理概要】 ' チェックボックスのクリックイベントを生成する。 ' チェックONの時、 対象行のチェック項目の文字を太字にする。 ' チェックOFFの時、 対象行のチェック項目の文字を標準に戻す。 ' (チェックボックス1~9まで)対象行は、Me.Control.Name(例:CheckBox1)の右1文字を抜き取り、抜き取った値に+1をしている。 ' (チェックボックス10~99まで)対象行は、Me.Control.Name(例:CheckBox10)の右2文字を抜き取り、抜き取った値に+1をしている。 '*************************************************** Public WithEvents Control As MSForms.CheckBox 'クリックされると実行 Private Sub Control_Click() If Len(Me.Control.Name) = 9 Then If Me.Control.Value = True Then Sheet4.Cells(Right(Me.Control.Name, 1) + 1, 2).Font.Bold = True Else Sheet4.Cells(Right(Me.Control.Name, 1) + 1, 2).Font.Bold = False End If ElseIf Len(Me.Control.Name) = 10 Then If Me.Control.Value = True Then Sheet4.Cells(Right(Me.Control.Name, 2) + 1, 2).Font.Bold = True Else Sheet4.Cells(Right(Me.Control.Name, 2) + 1, 2).Font.Bold = False End If End If End Sub |
ThisWorkbookに入力
1 2 3 4 5 6 |
'******* ActiveXコントロール用 ******* Private Sub Workbook_Open() Call Sample End Sub |
最後まで読んでいただき、ありがとうございました!
本のまとめ記事はこちら