|
>UserForm1.Controls("ComboBox" & cboNumberYear).RowSource = _
> Worksheets("RowSource_List").Range("B2:B15").Address
や
>UserForm1.Controls("ComboBox" & cboNumberSeason).RowSource = _
> Worksheets("RowSource_List").Range("E2:E5").Address
この指定方法では、各コンボボックスのRowSoruceプロパティには、
"$B$2:$B$15"や"$E$2:$E$5"といったアドレスしか渡りません。
そうすると、フォームのInitializeイベントを通った時に、
たまたまActiveだったシートのその範囲が設定されたことになりますからね。
どのシートのアドレスなのかまで指定してやれば間違いを起こさないでしょう。
Dim r1 As Range, r2 As Range
Dim i As Long
With Worksheets("RowSource_List")
Set r1 = .Range("B2:B15")
Set r2 = .Range("E2:E5")
End With
For i = 1 To 3
Me.Controls("ComboBox" & i).RowSource = r1.Address(External=True)
Next i
For i = 7 To 9
Me.Controls("ComboBox" & i).RowSource = r2.Address(External=True)
Next i
というように、Addressプロパティを外部参照付きで呼び出すのも有効かと思います。
あと、
>【Q2】
>cboNumberSeasonのコンボボックスが一覧しません。
>多分、cboNumberSeasonの変数型が整数だからかなと思っていますが、
>Range("E2:E5")は、文字データです。
は、上の理屈で、そのフォームをロードしようとした時の
ActiveSheet上の"E2:E5"がブランクだったとか?
|
|