使用循环填充列表框,同时忽略空白

Populate a listbox using a loop while ignoring blanks

我正在尝试使用 P 列中的项目填充列表框,我想忽略空白。

Private Sub UserForm_Initialize()
    Dim strItem As String
    Dim i As Long
    For i = 1 To 500

        If Cells(i, 16).Value = "" Then

        Else
            strItem = Selection.Value
            Debug.Print strItem
            lbxItems.AddItem strItem.Value

        End If


End Sub

当我填充列表框时,它全部显示为空白。我预计它会填充列中的项目。

您实际上从未更改代码中的 selection。您期望这条线位于 P(i),但它仍然保持在启动宏时碰巧 selected 的任何位置:

strItem = Selection.Value

要显示这一点,请在 FOR 循环内添加此行:

Debug.Print Selection.Address

要解决此问题,请更改 select 单元格的方式:

strItem = Cells(i, 16).Value

您的子现在应该是:

Private Sub UserForm_Initialize()
    Dim strItem As String
    Dim i As Long
    For i = 1 To 10
        '' Debugging only:
        '' Debug.Print Selection.Address
        If Cells(i, 16).Value <> "" Then
            strItem = Cells(i, 16).Value
            Debug.Print strItem
            lbxItems.AddItem strItem
        End If
    Next

End Sub

请注意,我还更改了添加到列表框中的内容(因为 {string}.value 无效)并反转了 IF 以防止出现空的 true-块。