Excel VBA - listbox.selected 属性 导致错误

Excel VBA - listbox.selected property causing error

我正在 Excel 和 VBA 中开发一个程序,当我尝试更改选定的 属性 时出现 运行 时间错误 380列表框。

属性 由 excel 电子表格中的一列确定,包含 True 或 False 值。我已经将这些单元格的内容打印到控制台,并且可以确认 true/false 值是否正常工作,但是当我尝试将这些值分配给我的 listbox.selected 属性 时,我得到了一个错误。

功能如下,任何帮助或建议都会在这一行发生appreciated.Error:

ElementListBox.Selected(count - 1) = TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value

Public Function LoadTier2SubTaskList(ByVal Task As Single, ByRef ElementListBox As Control)

ElementListBox.Clear
WorklistComboBox.Clear


Dim count As Single
Dim finished As Boolean
Dim TaskListSheet As Worksheet
Set TaskListSheet = TBSheet
finished = False

For count = 1 To 50

Next count

count = 1
Dim TaskString As String

Do While finished = False
TaskString = TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.ElementOfWork)).Text
If TaskString = vbNullString Then
finished = True

ElseIf TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Tier)).Value = 2 Then

ElementListBox.AddItem (TaskString)
ElementListBox.Selected(count - 1) = TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value
Debug.Print (TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value)
End If

count = count + 1
Loop

End Function

您需要将该值转换为布尔值吗?

ElementListBox.Selected(count - 1) = CBool(TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value)

让我们开始消除一些潜在的原因!

这个有用吗?

ElementListBox.Selected(count - 1) = true

试试这个(将您的代码从 count=1 替换为 Loop)...

count = 1
Dim itemCount as Integer
itemCount = 1
Dim TaskString As String

Do While finished = False
TaskString = TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.ElementOfWork)).Text
If TaskString = vbNullString Then
finished = True

ElseIf TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Tier)).Value = 2 Then

ElementListBox.AddItem (TaskString)
ElementListBox.Selected(itemCount - 1) =    CBool(TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1,  TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value)
Debug.Print (TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value)
itemCount = itemCount +1
End If

count = count + 1
Loop

注意添加 itemCount 变量来计算 listbox

中的项目数