Excel VBA質問箱 IV

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

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


35577 / 76738 ←次へ | 前へ→

【46358】クラスモジュールにモジュール名を入れない方法
質問  kobasan  - 07/1/31(水) 19:14 -

引用なし
パスワード
   ユーザーフォームとクラスモジュールの場合、下記の
 .Caller = Me
のようにすれば、UserForm1 をクラスモジュールに渡すことができます。

Private ChckBox(1 To 3) As New Class1

Private Sub UserForm_Initialize()
Dim i As Long
  For i = 1 To 3
    With ChckBox(i)
      .Item = Me.Controls("CheckBox" & i)
      .Caller = Me
    End With
  Next i
End Sub

Public Sub test()
    MsgBox "OK"
End Sub

'クラスモジュールClass1
Private MyCaller As Object 'UserForm用の変数
Private WithEvents MyCtrl As MSForms.CheckBox

Public Property Let Caller(NewCaller As Object)
   Set MyCaller = NewCaller
End Property

Private Sub MyCtrl_Click()
  Call MyCaller.test
End Sub


標準モジュールとクラスモジュールの場合、
    .Caller = Module1
では、Module1 をクラスモジュールに渡すことはできませんでした。
それで、今のところ下記のように、直接Module1を指定して
  Module1.test
で動かしています。

'クラスモジュールClass1
Private WithEvents Sht As Worksheet
・・・・
Private Sub Sht_SelectionChange(ByVal Target As Range)
  Module1.test
End Sub

'■標準モジュール
Sub Set_SheetEvent()
Dim clsSheet As Class1
  With Workbooks("TestBook")
    Set clsSheet = New Class1
    Set clsSheet.Sheet = .Sheets("Sheet1")
  End With
  Set clsSheet = Nothing
  Workbooks("TestBook").Activate
Public Sub test()
  MsgBox "OK"
End Sub

クラスモジュールには、直接モジュール名などを入れないようにするのが望ましいというのが頭にあります。
クラスモジュールに Module1 を書き込まないようにする方法があれば、よろしくお願いします。

0 hits

【46358】クラスモジュールにモジュール名を入れない方法 kobasan 07/1/31(水) 19:14 質問
【46364】Re:クラスモジュールにモジュール名を入れ... neptune 07/1/31(水) 22:05 発言
【46365】Re:クラスモジュールにモジュール名を入れ... ichinose 07/1/31(水) 22:27 発言
【46368】Re:クラスモジュールにモジュール名を入れ... kobasan 07/2/1(木) 0:41 お礼
【46367】Re:クラスモジュールにモジュール名を入れ... kobasan 07/2/1(木) 0:20 お礼

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