|
いつも参考にさせていただいてます。
UserForm上に配置したTextBoxを配列として扱う処理を
MOUGの「スキルアップ講座」を参考にして、以下のように作成しました
動作および内容は
UserForm1上のTextBoxをダブルクリックするとそのTextBoxに文字”OK”が入る
というイメージです。
標準モジュール
Sub test()
UserForm1.Show
End Sub
で、UserForm1を表示。
UserForm1
*TextBox1〜3を配置
コレクション インスタンス生成
Option Explicit
Option Base 1
Dim myClass1(3) As New Class1
Private Sub UserForm_Initialize()
Dim myTextBox As New Collection
Dim i As Integer
With myTextBox
.Add Item:=TextBox1
.Add Item:=TextBox2
.Add Item:=TextBox3
End With
For i = 1 To 3
Set myClass1(i) = New Class1
With myClass1(i)
.Txt = myTextBox(i)
.Index = i
End With
Next
End Sub
クラスモジュール「Class1」でTextBoxダブルクリック時の
メソッド記述(イベントプロシジャー)
標準モジュールに記述の *** Syori_FromTextBox をCall ***
Option Explicit
Private WithEvents myTxt As MSForms.TextBox
Private t_intIndex As Integer
Public Property Get Cmd() As MSForms.TextBox
Set Txt = myTxt
End Property
Public Property Let Txt(ByVal txtNewValue As MSForms.TextBox)
Set myTxt = txtNewValue
End Property
Public Property Get Index() As Integer
Index = t_intIndex
End Property
Public Property Let Index(ByVal intNewValue As Integer)
t_intIndex = intNewValue
End Property
Private Sub myTxt_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim temps As Object
Set temps = Me.Txt(t_intIndex)
Call Syori_FromTextBox(temps)
End Sub
************************************************************
標準モジュール
Public Sub Syori_FromTextBox(objTextBox As MSForms.TextBox)
objTextBox.Text = "OK"
End Sub
この流れの中で、実際にUserForm1上のTextBoxをクリックするとクラスモジュールで
エラーになるのですが、回避方法が発見できません。
エラー修正のアドバイス、方法のご教授をお願いできませんでしょうか。
どうぞよろしくお願いします。
|
|