0
私は "ComboTest2"と呼ばれるユーザーフォームの問題があります。 2つのコンボボックスで構成されています。 USerformをオブジェクトとしてインスタンス化すると、次のコードは、Userformの2番目のコンボボックスに目的のデータが含まれていないという意味では機能しません。VBAユーザーフォームコンボボックスのインスタンス化
Sub FillCombo(ByVal row As Long)
Dim rgCities As Range
Set rgCities = Worksheets("Tabelle2").Range("B2:D2").Offset(row)
ComboTest2.ComboBox2.Clear
ComboTest2.ComboBox2.List = WorksheetFunction.Transpose(rgCities)
ComboTest2.ComboBox2.ListIndex = 0
End Sub
Sub FillMain()
Dim ComboForm2 As ComboTest2
Set ComboForm2 = New ComboTest2
ComboForm2.Show
End Sub
ユーザーフォーム-コード:
Private Sub CommandButton1_Click()
Me.Hide
End Sub
Private Sub CommandButton2_Click()
Me.Hide
End Sub
Private Sub ComboBox1_Change()
FillCombo ComboBox1.ListIndex
End Sub
Private Sub UserForm_Initialize()
ComboBox1.List = Worksheets("Tabelle2").Range("A2:A5").Value
ComboBox1.ListIndex = 0
FillCombo ComboBox1.ListIndex
End Sub
しかし、私は私がFillMainサブを変更することを意味VBAによる "既定のインスタンス" を使用する場合:
Sub FillMain2()
Dim ComboForm2 As ComboTest2
Set ComboForm2 = New ComboTest2
'ComboForm2.Show
ComboTest2.Show
End Sub
を次にすべてがうまくあります。どうしてこんなことに?
敬具
ありがとうロリー、これは私を助けます。私は "FillCombo" SubのようなSubsをUserFormコードに統合しないように言われました。彼らはいいプログラミングスタイルではないと言った。 –
@Philipp_PK書かれているように、それはそのフォームとそのコンボボックスに固有なので、フォームの外にあることは全く意味がありません。 – Rory