|
▼VBWASURETA さん:
サンプルくださってありがとうございます。とてもよくわかりました。
一つ質問なのですが、
Private Sub UserForm_Initialize1()
このInitializeを、1と2に分けていますが、これだと動かないんですけど、
私のPCがおかしいのでしょうか?
それとも
Combobox2の方は、Sub Combobox1_Change()に命令文を書けばいいのでしょうか?
>▼ポポ さん:
>一応サンプルを書いてみます。
>わからないところがあれば教えて下さい。
>
>
>Dim Da As Variant '保持用にSub外に宣言
>
>'最初のコンボリストセット関数
>Private Sub UserForm_Initialize1()
>
> 'コンボボックスのリストクリア
> ComboBox1.Clear
>
> With Worksheets(1)
> 'Da配列にシートB1〜D5までのデータを2次元配列にセット
> Da = .Range("B1").CurrentRegion.Value
>
> 'Da配列には値がセットされているか判定なければ関数から抜ける
> If (IsEmpty(Da)) Then Exit Sub
>
> 'UBound(Da, 2)はDa2二元配列の要素2つ目の最大値にあたるDa(1,この部分の要素最大値)
> 'つまりサンプルでは3の値になる。
> For i = 1 To UBound(Da, 2)
> 'Da(1, 1 to 3) までをリストにセット
> ComboBox1.AddItem Da(1, i)
> Next i
> End With
>End Sub
>
>'次のコンボリストセット関数
>Private Sub UserForm_Initialize2()
>
> 'コンボボックスのリストをクリアする
> ComboBox2.Clear
>
> With Worksheets(1)
>
> 'Da配列には値がセットされているか判定なければ関数から抜ける
> 'UserForm_Initialize1の関数を通らずに先に入った場合はこの関数から抜ける
> If (IsEmpty(Da)) Then Exit Sub
>
> 'Da配列にはUserForm_Initialize1で値がセットされて
> '保持されているので取得は不要
>
> 'UBound(Da, 2)はDa2二元配列の要素2つ目の最大値にあたるDa(1,この部分の要素最大値)
> 'つまりサンプルでは3の値になる。
> For i = 1 To UBound(Da, 2)
>
> 'Da(2, 1 to 3) までをリストにセットする
> ComboBox1.AddItem Da(2, i)
> Next i
> End With
>End Sub
|
|