无法在Excel VBA UserForm中设置多列列表框的选定属性

无法在Excel VBA UserForm中设置多列列表框的选定属性,excel,vba,multiple-columns,userform,checkedlistbox,Excel,Vba,Multiple Columns,Userform,Checkedlistbox,我无法检查多列用户表单列表框中的项目。行lstPremissionLogic.Selected(lstPremissionLogic.ListCount)=True生成以下错误: 运行时错误“380”:无法设置所选属性。无效的属性值 我尝试将该值设置为-1,已选中,但无效 VBA代码 Private Function FillPreConditionLogicList() Dim varTemp As Variant Dim intLoop

我无法检查多列用户表单列表框中的项目。行
lstPremissionLogic.Selected(lstPremissionLogic.ListCount)=True
生成以下错误:

运行时错误“380”:无法设置所选属性。无效的属性值

我尝试将该值设置为
-1
已选中,但无效

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
Private函数fillPremissionLogicList()
Dim varTemp作为变型
作为整数的Dim intLoop
作为字符串的Dim strExpression
作为clsPreConditionLogic的Dim预处理逻辑
用逻辑
.ColumnCount=3
.ListStyle=fmListStyleOption
.MultiSelect=fmMultiSelectMulti
strExpression=TrimBlank(shtExpressionEditor.Range(“rngExpText”).Offset(,1.Value)
对于intLoop=0到mDicPreConditionLogic.Count-1
设置预条件逻辑=mDicPreConditionLogic.Items(intLoop)
.AddItem
.List(intLoop,0)=预处理逻辑.Name
.List(intLoop,1)=预处理逻辑.StartEnclosure
.List(intLoop,2)=预处理逻辑.endnClosure
varTemp=GetEnclosedString(strExpression、premissionlogic.StartEnclosure、premissionlogic.EndEnclosure)
如果varTemp“”那么
lstPremissionLogic.Selected(lstPremissionLogic.ListCount)=True'//给出错误
strExpression=varTemp
如果结束
下一个
以
端函数

您必须从
.ListCount
中减去
-1

lstPreConditionLogic.Selected(lstPreConditionLogic.ListCount - 1) = True
因为列表索引统计在
0
处计数,但是如果
ListCount=5
,那么这5个条目的索引是
0
1
2
3
4
,这意味着最后一个有效的索引是
.ListCount-1