VBA listbox填充值方法

请问如何把工作表中符合条件的记录填写到VBA listbox中?

Private Sub CommandButton1_Click()
' Purpose:  fill listbox with range values after clicking on CommandButton1
'           (code could be applied to UserForm_Initialize(), too)
' Note:     based on @Siddharth-Rout 's proposal at https://stackoverflow.com/questions/10763310/how-to-populate-data-from-a-range-multiple-rows-and-columns-to-listbox-with-vb
'           but creating a variant data field array directly from range in a one liner
'           (instead of filling a redimensioned array with range values in a loop)
Dim ws      As Worksheet
Dim rng     As Range
Dim MyArray                 ' variant, receives one based 2-dim data field array
'~~> Change your sheetname here
Set ws = Sheets("Sheet1")

'~~> Set you relevant range here
Set rng = ws.Range("A1:C" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row)

With Me.ListBox1
    .Clear
    .ColumnHeads = False
    .ColumnCount = rng.Columns.Count

    '~~> create a one based 2-dim datafield array
     MyArray = rng

    '~~> fill listbox with array values
    .List = MyArray

    '~~> Set the widths of the column here. Ex: For 5 Columns
    '~~> Change as Applicable
    .ColumnWidths = "50;50;50"
    .TopIndex = 0
End With
End Sub
```bash


```

下面是一个示例代码,假设已经在 Excel 中创建了一个名为 "listbox1" 的 listbox 和一个名为 "Sheet1" 的工作表,并且希望把 Sheet1 中 A 列为 "apple" 的记录填写到 listbox1 中。

Private Sub CommandButton1_Click()
   Dim i As Long
   For i = 1 To Range("A1").CurrentRegion.Rows.Count
      If Range("A" & i).Value = "apple" Then
         listbox1.AddItem Range("B" & i).Value
      End If
   Next
End Sub

在这个代码中,使用了 For 循环来遍历 Sheet1 中的所有记录,并检查 A 列的值是否为 "apple"。如果是,就使用 listbox1 的 AddItem 方法将 B 列的值添加到 listbox1 中。
仅供参考,望采纳,谢谢。

可以使用下列 VBA 代码来实现将工作表中符合条件的记录填写到 VBA listbox 中:

首先,打开 VBA 编辑器,在你的工作簿中新建一个模块。

然后,输入下面的代码,其中 "ListBox1" 是你的 ListBox 的名称,"Sheet1" 是你的工作表的名称,"A1:A10" 是你要在 ListBox 中显示的数据的区域,"B1:B10" 是你的条件所在的区域,"Criteria" 是你的条件:

For i = 1 To 10
   If Range("B" & i).Value = "Criteria" Then
      ListBox1.AddItem Range("A" & i).Value
   End If
Next i

最后,按下 Alt + Q 键退出 VBA 编辑器,打开你的工作簿,你应该能看到 ListBox 中已经填充了符合条件的记录。
请注意,这个代码仅供参考,你可以根据你的需要来调整代码的细节。


   Dim i As Long
   For i = 1 To Range("A1").CurrentRegion.Rows.Count
      If Range("A" & i).Value = "apple" Then
        Sheet1.ListBox1.AddItem Range("B" & i).Value
      End If
   Next

你可以使用 VBA 中的 ListBox.AddItem 方法来向 listbox 中添加记录。例如,下面是一个示例代码,它会在工作表中查找符合条件的记录,然后将它们添加到 listbox 中:

' 假设工作表名为 "Sheet1"listbox 名为 "ListBox1"

' 定义变量
Dim rng As Range
Dim cell As Range

' 清空 listbox
ListBox1.Clear

' 设置查找条件
Set rng = Sheet1.Range("A1:A10").Find("查找条件", LookIn:=xlValues)

' 如果找到了符合条件的记录
If Not rng Is Nothing Then
  ' 将符合条件的记录添加到 listboxListBox1.AddItem rng.Value

  ' 查找其他符合条件的记录
  Set rng = Sheet1.Range("A1:A10").FindNext(rng)
  While Not rng Is Nothing
    ListBox1.AddItem rng.Value
    Set rng = Sheet1.Range("A1:A10").FindNext(rng)
  Wend
End If

如果你想添加工作表中所有符合条件的记录,你可以使用以下代码:

' 假设工作表名为 "Sheet1"listbox 名为 "ListBox1"

' 定义变量
Dim rng As Range

' 清空 listbox
ListBox1.Clear

' 设置查找条件
Set rng = Sheet1.Range("A1:A10").Find("查找条件", LookIn:=xlValues)

' 如果找到了符合条件的记录
If Not rng Is Nothing Then
  ' 将符合条件的记录添加到 listboxListBox1.AddItem rng.Value

  ' 查找其他符合条件的记录
  Do Until rng Is Nothing
  Set rng = Sheet1.Range("A1:A10").FindNext(rng)
  If Not rng Is Nothing Then
    ListBox1.AddItem rng.Value
  End If
Loop


在这段代码中,我们使用 Range.Find 和 Range.FindNext 方法来在工作表中查找符合条件的记录,然后使用 ListBox.AddItem 方法将它们添加到 listbox 中。注意,我们使用了一个 Do Until 循环来查找所有符合条件的记录,当找不到更多的记录时,循环会停止。

希望这些信息能帮到你。

如果你想把工作表中符合条件的记录填写到 VBA listbox 中,你可以使用以下代码:

Sub FillListBox()

Dim r As Range
Dim i As Long

Set r = Range("A1:A10") '设置要搜索的区域

For i = 1 To r.Rows.Count '遍历区域中的每一行
    If r(i, 1) = "Apple" Then '如果找到了符合条件的记录
        Me.ListBox1.AddItem r(i, 1) '将记录填写到 listbox 中
    End If
Next i

End Sub

在上面的代码中,我们首先设置了要搜索的区域为 A1:A10,然后使用 For 循环遍历区域中的每一行,如果找到了符合条件的记录(即第一列的值为 "Apple"),就将记录填写到 listbox 中。

想把工作表中符合条件的记录填写到 VBA ListBox 中,可以使用以下步骤:

1.使用 VBA 循环遍历工作表中的每一行。
2.在循环中,使用 If 语句判断当前行是否符合条件。
3.如果当前行符合条件,则使用 ListBox.AddItem 方法将该行的数据添加到 ListBox 中。

Sub FillListBox()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
    Dim i As Long
    For i = 1 To ws.UsedRange.Rows.Count
        If ws.Cells(i, 1).Value = "Yes" Then
            Me.ListBox1.AddItem ws.Cells(i, 2).Value
        End If
    Next
End Sub