|
ponponさん、こんばんは。
角田さんのホームページ「擬似の脱却」
http://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P-Ctrl_Arrays.htm
で勉強し、
Ichinoseさんのコード【18245】を参考にして、勉強用に自分なりに分かりやすくつくりました。
また、この質問箱でTextBoxの扱いもIchinoseさんに質問して教えてもらいました。
少しクラスモジュールが使えるようになった程度ですから、不十分かもしれません。
分かりやすければ参考にして下さい。
必要に応じて、標準モジュールとUserform1のモジュールのLabelの数、TextBoxの数
を変えて下さい。
'■■標準モジュール
Public copydata As Variant '<==標準モジュールに記述すると機能する
Sub test()
UserForm1.Show
End Sub
Sub ResetColor()
Dim i As Long
For i = 1 To 30 '<==Labelの数30
UserForm1.Controls("Label" & i).ForeColor = &H0 '色復元
Next i
End Sub
'■■Userform1のモジュール
Private FrmLabel(1 To 30) As New Class1 '<==Labelの数30
Private FrmTextBox(1 To 42) As New Class2 '<==TextBoxの数42
Private Sub UserForm_Initialize()
Dim i As Long
For i = 1 To 30 '<==Labelの数30
With FrmLabel(i)
.Item = Me.Controls("Label" & i)
End With
Next i
'
For i = 1 To 42 '<==TextBoxの数42
With FrmTextBox(i)
.Item2 = Me.Controls("TextBox" & i)
End With
Next i
End Sub
Private Sub UserFom_Terminate()
Erase FrmLabel
Erase FrmTextBox
End Sub
'■■Class1 のモジュール
Private WithEvents MyCtrl As MSForms.Label
Public Property Let Item(NewCtrl As MSForms.Label)
Set MyCtrl = NewCtrl
End Property
Private Sub MyCtrl_Click()
ResetColor
MyCtrl.ForeColor = &HFF '赤色
copydata = MyCtrl.Caption
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_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
MyCtrl2.Text = copydata
End Sub
|
|