Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11692 / 76734 ←次へ | 前へ→

【70574】Re:チェックボックスのチェック数について
発言  みそじのおじさん  - 11/12/1(木) 23:43 -

引用なし
パスワード
   atsjack さん UO3さん。こんばんは。

クラスモジュールで処理をする簡単なサンプルです。
(UO3さん、クラスバカでごめんなさい^^)

クラスモジュールを1つ挿入します。名前はデフォルトのClass1のままで
結構です。

Class1

Option Explicit

Private WithEvents mCheckBox As MSForms.CheckBox
Private mTargetForm     As Object

Public Sub Init(ByVal NewCheckBox As MSForms.CheckBox, ByVal NewForm As Object)
  Set mCheckBox = NewCheckBox
  Set mTargetForm = NewForm
End Sub

Private Sub Class_Terminate()
  Set mCheckBox = Nothing
  Set mTargetForm = Nothing
End Sub

Private Sub mCheckBox_Click()
  Call mTargetForm.CheckCount_Calculate
End Sub

Class1ここまで

該当UserFormのモジュールに

Option Explicit
Private myCheckBox() As Class1

Private Sub UserForm_Initialize()

  Dim chk As Object
  Dim i  As Long
  
    'UserFormに配置してあるコントロールを全て列挙
    For Each chk In Me.Controls
      '変数chkがCheckBoxだったら
      If TypeName(chk) = "CheckBox" Then
        '配列のサイズをRedimして確保
        ReDim Preserve myCheckBox(i) As Class1
        'クラスのインスタンスを作成し配列に確保
        Set myCheckBox(i) = New Class1
        'クラスのメソッド"Init"を呼び出しCheckBoxとUserFormを登録
        myCheckBox(i).Init chk, Me
        '次のCheckBoxの格納の為にiを+1
        i = i + 1
      End If
    Next
End Sub

Private Sub UserForm_Terminate()
  'クラスを解放
  Erase myCheckBox
End Sub

'checkされている数をカウントするプロシージャ
'このプロシージャのスコープはpublic
Public Sub CheckCount_Calculate()

  Dim chk As Object
  Dim c  As Long
  
    For Each chk In Me.Controls
      If TypeName(chk) = "CheckBox" Then
        'CheckBox.ValueがTrueなら+1
        If chk.Value Then
          c = c + 1
        End If
      End If
    Next
    
    Debug.Print "Checkされている数は、" & c
   
End Sub

このクラスはクラスに登録したCheckBoxにイベント(Click)が
発生するとUserFormに用意したカウントをするプロシージャ
を呼びだす仕組みです。

クラスモジュールは大変便利です。是非押さえてくださいね。

8 hits

【70570】チェックボックスのチェック数について atsjack 11/12/1(木) 22:53 質問
【70571】Re:チェックボックスのチェック数について atsjack 11/12/1(木) 23:19 発言
【70572】Re:チェックボックスのチェック数について UO3 11/12/1(木) 23:22 発言
【70573】Re:チェックボックスのチェック数について atsjack 11/12/1(木) 23:33 お礼
【70574】Re:チェックボックスのチェック数について みそじのおじさん 11/12/1(木) 23:43 発言
【70575】Re:チェックボックスのチェック数について atsjack 11/12/1(木) 23:57 お礼
【70576】Re:チェックボックスのチェック数について みそじのおじさん 11/12/2(金) 0:13 発言
【70577】Re:チェックボックスのチェック数について atsjack 11/12/2(金) 10:17 お礼

11692 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free