|
▼ポポ さん:
おはようございます。
それであればこんな感じで良い気がします。
'データ保持配列定義
Dim Da As Variant
'フォーム初期化時に区分コンボボックスへリスト追加
Private Sub UserForm_Initialize()
Dim i As Integer
'最初に区分コンボボックスのリストを全て消す
区分.Clear
With Worksheets(1)
'シートの連続データ(B1からD5まで)を配列に入れる
Da = .Range("B1").CurrentRegion.Value
'Da配列が何も入っていない場合はSubから抜ける
If (IsEmpty(Da)) Then Exit Sub
'UBound(Da, 2)はDa( 1, ここの素数最大値 )
For i = 1 To UBound(Da, 2)
'Da配列に入っているデータをリストに追加
区分.AddItem Da(1, i)
Next i
End With
End Sub
'区分コンボボックスのリスト選択と同時にComboBox1のリスト追加
Private Sub 区分_Change()
Dim DaIndex As Integer
Dim i As Integer
'リストが選択されていないもしくは、配列の中身がない場合はSubから抜ける
'初期処理に入ってから抜けるようにしても良いかもです
If (区分.ListIndex = -1 Or IsEmpty(Da)) Then Exit Sub
'最初にComboBox1コンボボックスのリストを全て消す
ComboBox1.Clear
'選択されたIndexを保持。+1はDa配列の素数とあわせるため
DaIndex = 区分.ListIndex + 1
'UBound(Da, 1)はDa( ここの素数最大値 ,1 )
For i = 2 To UBound(Da, 1)
'Da配列の中身がある場合に入る条件
If Not (IsEmpty(Da(i, DaIndex)) Or Da(i, DaIndex) = "") Then
'先ほど保持したIndexはDa配列の2番目の素数として使う
ComboBox1.AddItem Da(i, DaIndex)
End If
Next i
End Sub
|
|