0
私は2つの列にステータスがあり、その他に名前があります。私がしたいのは、オプションボタンを使ってstausを選択することです。オプションに応じて、名前を選択してリストボックス/コンボボックスに入力する必要があります。リストボックスを動的に設定する
Private Sub CommandButton1_Click()
Dim ListOfNames() As Variant
Dim ws As Worksheet
Set ws = Worksheets(2)
Dim Count As Long
Dim StatusVal As String
Dim j As Long, k As Long, iRow As Long
j = 0
k = 0
If OptionButton1.Value = True Then
StatusVal = "Retired"
j = j + 1
ElseIf OptionButton2.Value = True Then
StatusVal = "Employed"
j = j + 1
ElseIf OptionButton3.Value = True Then
StatusVal = "On Leave"
j = j + 1
Else
ListVal = "Not Selected"
End If
'Count the number of rows in excel
iRow = ws.Cells(Rows.Count, 1) _
.End(xlUp).Offset(1, 0).Row
ReDim ListOfNames(iRow, j)
' first row for header
For Count = 2 To iRow - 1 Step 1
If StatusVal = ws.Cells(Count, 15).Value Then
k = k + 1
ListOfNames(k, j) = ws.Cells(Count, 1).Value
End If
Next
With ListBox1
.list() = ListOfAccounts
End With
End Sub
ありがとうAndrew、私はadditemプロパティを使用したので、これを解決できませんでしたが、ループが追加され、見つかった名前の数が増えてパフォーマンスが低下します。 .list()関数が配列の値をリストボックスに割り当てるべきではないかどうかは、私のクエリです。 –
.list()関数は、2次元配列を渡している間に、1次元配列を期待している可能性があります。私はそれを試みるだろう。配列の割り当てが反復処理よりも効率的であるかどうかを知るために、内部について十分に知りません。 –