|
▼ポポ さん:
一応サンプルを書いてみます。
わからないところがあれば教えて下さい。
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
|
|