Excel VBA質問箱 IV

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

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


11077 / 13646 ツリー ←次へ | 前へ→

【18288】クラスモジュール勉強中 Kobasan 04/9/20(月) 17:14 質問[未読]
【18297】Re:クラスモジュール勉強中 Kobasan 04/9/20(月) 23:00 質問[未読]
【18298】Re:クラスモジュール勉強中 ichinose 04/9/20(月) 23:22 発言[未読]
【18300】Re:クラスモジュール勉強中 Kobasan 04/9/21(火) 0:16 お礼[未読]

【18288】クラスモジュール勉強中
質問  Kobasan  - 04/9/20(月) 17:14 -

引用なし
パスワード
   クラスモジュールの勉強をしています。
Userform1の中のテキストボックスをクリックしたら、data="222"の222を
テキストボックスに入れたいのですがうまくできません。
(テキストボックス2個あります)
何方か対策を教えて下さい。

'Userform1のモジュールに
Private FrmTextBox(1 To 2) As New Class2

Private Sub UserForm_Initialize()
Dim i As Long
  For i = 1 To 2
    With FrmTextBox(i)
      .Item2 = Me.Controls("TextBox" & i)
    End With
  Next i
End Sub

'======================================
'Class2のモジュールに
Private WithEvents MyCtrl2 As MSForms.TextBox

Public Property Let Item2(NewCtrl As MSForms.TextBox)
  Set MyCtrl2 = NewCtrl
End Property

Private Sub MyCtrl2_Click()
  data = "222"
  MyCtrl2.Text = data
End Sub

【18297】Re:クラスモジュール勉強中
質問  Kobasan  - 04/9/20(月) 23:00 -

引用なし
パスワード
   ラベルでやると、問題なくできます。下記コードです。
前述のテキストボックスでできる方法を、どなたか教えて下さい。

'Userform1のモジュールに
Private FrmLabel(1 To 2) As New Class2

Private Sub UserForm_Initialize()
Dim i As Long
  For i = 1 To 2
    With FrmLabel(i)
      .Item = Me.Controls("Label" & i)
      
    End With
  Next i
End Sub

'======================================
'Class2のモジュールに
Private WithEvents MyCtrl As MSForms.Label

Public Property Let Item(NewCtrl As MSForms.Label)
  Set MyCtrl = NewCtrl
End Property

Private Sub MyCtrl_Click()
  data = "222"
  MyCtrl.Caption = data
End Sub

【18298】Re:クラスモジュール勉強中
発言  ichinose  - 04/9/20(月) 23:22 -

引用なし
パスワード
   ▼Kobasan さん:
こんばんは。

>ラベルでやると、問題なくできます。下記コードです。
>前述のテキストボックスでできる方法を、どなたか教えて下さい。
テキストボックスには、Clickイベントがないですよね?
>Private Sub MyCtrl2_Click()
と記述してもこれは、イベントプロシジャーでは
ありません。
マウスダウンイベントで代用しましょう

Private Sub MyCtrl2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
data = "222"
  MyCtrl2.Text = data
End Sub


>
>'Userform1のモジュールに
>Private FrmLabel(1 To 2) As New Class2
>
>Private Sub UserForm_Initialize()
>Dim i As Long
>  For i = 1 To 2
>    With FrmLabel(i)
>      .Item = Me.Controls("Label" & i)
>      
>    End With
>  Next i
>End Sub
>
>'======================================
>'Class2のモジュールに
>Private WithEvents MyCtrl As MSForms.Label
>
>Public Property Let Item(NewCtrl As MSForms.Label)
>  Set MyCtrl = NewCtrl
>End Property
>
>Private Sub MyCtrl_Click()
>  data = "222"
>  MyCtrl.Caption = data
>End Sub

【18300】Re:クラスモジュール勉強中
お礼  Kobasan  - 04/9/21(火) 0:16 -

引用なし
パスワード
   ichinose さん:
夜分遅くですが、こんばんは。

マウスダウンイベントを使うとできました。
クラスモジュールを勉強中なので、なんでもクリックイベントで解決できると
思っていました。また勉強になりました。ありがとうございます。

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