VBA-从组合框中删除项
我在尝试删除组合框中的重复项时遇到了一个VBA-从组合框中删除项,vba,excel,Vba,Excel,我在尝试删除组合框中的重复项时遇到了一个未指定的错误 我首先使用RowSource属性添加项。 然后我想使用removietem属性删除重复的值 我得到的错误是在这一行生成的:CompteCOMBO.removietem(j) 提前谢谢你的帮助 祝你过得愉快 Jean以下是一些可疑物品: 同时迭代和删除通常需要非常小心。您可能很容易以错误告终,因为您正试图处理已删除的内容 对于CompteCOMBO.ListCount-1的j=i+1,请小心这一行。对于j=5到4,它最终的计算结果类似于 在这种
未指定的错误
我首先使用RowSource
属性添加项。
然后我想使用removietem
属性删除重复的值
我得到的错误是在这一行生成的:CompteCOMBO.removietem(j)
提前谢谢你的帮助
祝你过得愉快
Jean以下是一些可疑物品:
。对于j=5到4,它最终的计算结果类似于
CompteCOMBO.removietem(j)
字典
,它有一个方便的存在
功能。要使用它,您需要添加对Microsoft脚本运行时的引用。在工具>参考中找到它。类似这样的方法会奏效:
模块1
Sub ShowUserform()
With New UserForm1
.Show vbModal
End With
End Sub
Private Sub UserForm_Initialize()
Dim arr As Variant, v As Variant
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
arr = Array("a", "b", "a") 'or similarly:
'arr = Application.Transpose(ThisWorkbook.Worksheets("Missions").Range("CompetesExistant"))
For Each v In arr
If Not d.Exists(v) Then d.Add v, v
Next v
Me.ComboBox1.List = d.Keys
End Sub
UserForm1
Sub ShowUserform()
With New UserForm1
.Show vbModal
End With
End Sub
Private Sub UserForm_Initialize()
Dim arr As Variant, v As Variant
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
arr = Array("a", "b", "a") 'or similarly:
'arr = Application.Transpose(ThisWorkbook.Worksheets("Missions").Range("CompetesExistant"))
For Each v In arr
If Not d.Exists(v) Then d.Add v, v
Next v
Me.ComboBox1.List = d.Keys
End Sub
以下是一些可疑项目:
。对于j=5到4,它最终的计算结果类似于
CompteCOMBO.removietem(j)
字典
,它有一个方便的存在
功能。要使用它,您需要添加对Microsoft脚本运行时的引用。在工具>参考中找到它。类似这样的方法会奏效:
模块1
Sub ShowUserform()
With New UserForm1
.Show vbModal
End With
End Sub
Private Sub UserForm_Initialize()
Dim arr As Variant, v As Variant
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
arr = Array("a", "b", "a") 'or similarly:
'arr = Application.Transpose(ThisWorkbook.Worksheets("Missions").Range("CompetesExistant"))
For Each v In arr
If Not d.Exists(v) Then d.Add v, v
Next v
Me.ComboBox1.List = d.Keys
End Sub
UserForm1
Sub ShowUserform()
With New UserForm1
.Show vbModal
End With
End Sub
Private Sub UserForm_Initialize()
Dim arr As Variant, v As Variant
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
arr = Array("a", "b", "a") 'or similarly:
'arr = Application.Transpose(ThisWorkbook.Worksheets("Missions").Range("CompetesExistant"))
For Each v In arr
If Not d.Exists(v) Then d.Add v, v
Next v
Me.ComboBox1.List = d.Keys
End Sub
你好,谢谢你的回答。我对这个脚本语言不太了解。这是一个公司项目,我知道如何使用代码添加库,但对于我所面临的问题(IMO)来说有点复杂。我只是不明白为什么我不能从我的组合框中删除项目???嗨@Jean。我鼓励你熟悉字典。它们被广泛使用,并且在尝试创建唯一列表时非常有用(如上面所示)。这并不是说你要导入任何新的东西,它只是Excel的标准库之一…@Jean FIC,我添加了一些需要注意的东西。但我不打算专门测试代码。如前所述,我强烈建议从另一个角度攻击它。它确实可以使用:arr=Application.Transpose(ThisWorkbook.Sheets(“任务”).Range(“ComptesExistant”)@Jean-FIC,对不起,我的格式错了——更新了,谢谢你的回答。我对这个脚本语言不太了解。这是一个公司项目,我知道如何使用代码添加库,但对于我所面临的问题(IMO)来说有点复杂。我只是不明白为什么我不能从我的组合框中删除项目???嗨@Jean。我鼓励你熟悉字典。它们被广泛使用,并且在尝试创建唯一列表时非常有用(如上面所示)。这并不是说你要导入任何新的东西,它只是Excel的标准库之一…@Jean FIC,我添加了一些需要注意的东西。但我不打算专门测试代码。我强烈建议从另一个角度来攻击它,如上所述。它确实可以使用:arr=Application.Transpose(ThisWorkbook.Sheets(“任务”).Range(“ComptesExistant”)@Jean-FIC,抱歉,我这里的格式错了--已更新