使用循环填充列表框,同时忽略空白
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
-块。
我正在尝试使用 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
-块。