ID非公開

2021/4/30 14:46

33回答

VBA Control を配列の様に扱いたい VBにあるControl配列の機能がVBAにはないので 名前に連番をつけて配列の様に取り扱う事はよくやっています。

Visual Basic70閲覧

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

ありがとうございます。 正常に動作する事を確認しました。 自分の必要とする機能を追加していきたいと思います。 汎用にという意味を理解できていないと思われる方の回答と違って これなら あらゆる(?)場面でそのまま使えそうです。

お礼日時:5/4 15:19

その他の回答(2件)

0

こんにちは。 クラスで、イベントの扱う種類が限定される現象があるので、 できる範囲で、仕様を考えてください。 ユーザーフォームにテキストボックスとボタンを配置しておいて、 メッセージを表示するコード作ってみました class3 'イベントを持つオプションボタン型の変数を宣言 Private WithEvents Btn As MSForms.CommandButton Public Sub NewClass(ByVal c As MSForms.CommandButton) Set Btn = c End Sub Private Sub Btn_Click() MsgBox "クリックしたのは" & Btn.Name & "です" End Sub class4 'イベントを持つオプションボタン型の変数を宣言 Private WithEvents mytxt As MSForms.TextBox Public Sub NewClass(ByVal c As MSForms.TextBox) Set mytxt = c End Sub Private Sub mytxt_Click() MsgBox "クリックしたのは" & mytxt.Name & "です" End Sub Private Sub mytxt_Enter() MsgBox "フォーカスきました" & mytxt.Name End Sub Private Sub mytxt_Change() MsgBox "変化" & mytxt.Name End Sub Private Sub mytxt_DblClick(ByVal Cancel As MSForms.ReturnBoolean) MsgBox "dblclk" & mytxt.Name End Sub ユーザーフォーム側です Option Explicit Private Numtxtbox(0 To 10) As New Class4 Private NumcmdBtn(0 To 10) As New Class3 Private Sub UserForm_Initialize() 'インスタンスの生成 Dim i For i = 1 To 3 Numtxtbox(i).NewClass Controls("TextBox" & i) NumcmdBtn(i).NewClass Controls("CommandButton" & i) Next End Sub

class5 Private WithEvents mytxt As MSForms.TextBox Private WithEvents myBtn As MSForms.CommandButton Public Sub NewBtnClass(ByVal c As MSForms.CommandButton) Set myBtn = c End Sub Private Sub myBtn_Click() MsgBox "クリック" & myBtn.Name & "です" End Sub Public Sub NewtxtClass(ByVal c As MSForms.TextBox) Set mytxt = c End Sub Private Sub mytxt_Change() MsgBox "変化" & mytxt.Name & "です" End Sub