|
▼stamp さん:
はじめまして
>下記の、ComboBox_Change()の部分ですが、
>For Nextなどを使って、一つにまとめられないでしょうか?
クラスを使ってみますか?
VBEメニュ−から[挿入]-[クラスモジュール]で
クラスモジュールを追加し、モジュールの名前を
「ctrlComboBox」としてください。
クラスモジュールには以下のコードを貼り付けてください。
'------------------------------------------------
Option Explicit
Private WithEvents myComboBox As MSForms.ComboBox
Private myTextBox As MSForms.TextBox
Public Property Set ComboBox(arg As MSForms.ComboBox)
Set myComboBox = arg
End Property
Public Property Set TextBox(arg As MSForms.TextBox)
Set myTextBox = arg
End Property
Private Sub Class_Terminate()
Set myTextBox = Nothing
Set myComboBox = Nothing
End Sub
'やらせたい処理
Private Sub myComboBox_Change()
myTextBox.Text = myComboBox.Value
End Sub
UserFormのほうは こんな感じです。
'------------------------------------------------
Option Explicit
Private Combos() As ctrlComboBox
Private Sub UserForm_Initialize()
Dim i As Long
Dim myList
myList = Split("AAA BBB CCC DDD EEE") '適宜変更
ReDim Combos(1 To 5)
For i = 1 To 5
Me("ComboBox" & i).List = myList
Set Combos(i) = New ctrlComboBox
With Combos(i)
Set .ComboBox = Me("ComboBox" & i)
Set .TextBox = Me("TextBox" & i + 26) 'Comboと TextBoxをリンク
End With
Next
End Sub
Private Sub UserForm_Terminate()
Erase Combos
End Sub
|
|