无法在 Excel VBA 用户窗体中设置多列列表框的选定 属性
Could not set the selected property of a multi-column ListBox in Excel VBA UserForm
我无法检查多列用户窗体列表框中的项目。 lstPreConditionLogic.Selected(lstPreConditionLogic.ListCount) = True
行生成以下错误:
Run-time error '380': Could not set the Selected property. Invalid property value
我尝试将值设置为 -1
, checked
但它没有用。
VBA代码
Private Function FillPreConditionLogicList()
Dim varTemp As Variant
Dim intLoop As Integer
Dim strExpression As String
Dim PreConditionLogic As clsPreConditionLogic
With lstPreConditionLogic
.ColumnCount = 3
.ListStyle = fmListStyleOption
.MultiSelect = fmMultiSelectMulti
strExpression = TrimBlank(shtExpressionEditor.Range("rngExpText").Offset(, 1).Value)
For intLoop = 0 To mDicPreConditionLogic.Count - 1
Set PreConditionLogic = mDicPreConditionLogic.Items(intLoop)
.AddItem
.List(intLoop, 0) = PreConditionLogic.Name
.List(intLoop, 1) = PreConditionLogic.StartEnclosure
.List(intLoop, 2) = PreConditionLogic.EndEnclosure
varTemp = GetEnclosedString(strExpression, PreConditionLogic.StartEnclosure, PreConditionLogic.EndEnclosure)
If varTemp <> "" Then
lstPreConditionLogic.Selected(lstPreConditionLogic.ListCount) = True '//Gives Error
strExpression = varTemp
End If
Next
End With
End Function
你必须从你的 .ListCount
中减去 -1
…
lstPreConditionLogic.Selected(lstPreConditionLogic.ListCount - 1) = True
因为列表索引统计在 0
处计数,但是例如,如果 ListCount = 5
那么这 5 个条目的索引是 0
、1
、2
, 3
, 4
这意味着最后一个有效索引是 .ListCount - 1
.
我无法检查多列用户窗体列表框中的项目。 lstPreConditionLogic.Selected(lstPreConditionLogic.ListCount) = True
行生成以下错误:
Run-time error '380': Could not set the Selected property. Invalid property value
我尝试将值设置为 -1
, checked
但它没有用。
VBA代码
Private Function FillPreConditionLogicList()
Dim varTemp As Variant
Dim intLoop As Integer
Dim strExpression As String
Dim PreConditionLogic As clsPreConditionLogic
With lstPreConditionLogic
.ColumnCount = 3
.ListStyle = fmListStyleOption
.MultiSelect = fmMultiSelectMulti
strExpression = TrimBlank(shtExpressionEditor.Range("rngExpText").Offset(, 1).Value)
For intLoop = 0 To mDicPreConditionLogic.Count - 1
Set PreConditionLogic = mDicPreConditionLogic.Items(intLoop)
.AddItem
.List(intLoop, 0) = PreConditionLogic.Name
.List(intLoop, 1) = PreConditionLogic.StartEnclosure
.List(intLoop, 2) = PreConditionLogic.EndEnclosure
varTemp = GetEnclosedString(strExpression, PreConditionLogic.StartEnclosure, PreConditionLogic.EndEnclosure)
If varTemp <> "" Then
lstPreConditionLogic.Selected(lstPreConditionLogic.ListCount) = True '//Gives Error
strExpression = varTemp
End If
Next
End With
End Function
你必须从你的 .ListCount
中减去 -1
…
lstPreConditionLogic.Selected(lstPreConditionLogic.ListCount - 1) = True
因为列表索引统计在 0
处计数,但是例如,如果 ListCount = 5
那么这 5 个条目的索引是 0
、1
、2
, 3
, 4
这意味着最后一个有效索引是 .ListCount - 1
.