gpt4 book ai didi

excel - 删除重复的 VBA 脚本字典

转载 作者:行者123 更新时间:2023-12-04 21:30:43 30 4
gpt4 key购买 nike

我在工作簿中有三个组合框,我想将它们以菊花链形式连接在一起。单击组合框上的下拉按钮后按键盘上的向下箭头时,每个组合框的项目列表都会刷新。第二个组合框列表取决于在第一个组合框中所做的选择。我已经使用脚本字典构建了这些。
strCustComboBox是当前组合框应该依赖的前一个组合框中的值。
rngProject正在查看一个包含大量报价 ID 的范围。我从该列偏移到保存前一个组合框的值的列,如果该值等于 strCustComboBox然后添加 rngCompany脚本字典的值

我在尝试对 rngCompany 进行重复数据删除的循环中遇到问题写入脚本字典的值,该字典用于构建要在组合框中显示的列表。我的代码如下。

Sub UpdateComboBox1FromDashData()
Dim strCustComboBox As MSForms.ComboBox
Dim strComboBox As MSForms.ComboBox
Dim rngCompany As Range
Dim rngProject As Range
Dim d As Object, c As Variant, i As Long

Worksheets("QuoteEditor").Unprotect "xxxx"

Application.ScreenUpdating = False

Set strCustComboBox = ThisWorkbook.Worksheets("QuoteEditor").ComboBox4
Set strComboBox = ThisWorkbook.Worksheets("QuoteEditor").ComboBox1

If strCustComboBox = "" Then

MsgBox "Please select a project first", vbOKCancel

Else
End If

ThisWorkbook.Worksheets("DashboardData").Select

Call FindLastRow("A", "10")

Set d = CreateObject("Scripting.Dictionary")
c = Range("A10:A" & strLastRow)


Set rngProject = ThisWorkbook.Worksheets("DashboardData").Range("A10:A" & strLastRow)

i = 1

For Each rngCompany In rngProject

If UCase(rngCompany.Offset(, 7).Value) = UCase(strCustComboBox) Then

If d.exists(rngCompany) = True Then

Else
d.Add rngCompany, i
i = i + 1

End If

Else

End If

Next rngCompany

For Each Item In d

strComboBox.AddItem (Item)

Next Item

我想我在哪里使用 d.exists(rngCompany)是错的,但我不确定。当子例程完成时,我仍然得到重复数据返回组合框列表。

我还根据建议的重复线程尝试了以下代码:
With d

For Each rngCompany In rngProject

If UCase(rngCompany.Offset(, 7).Value) = UCase(strCustComboBox) Then

If Not .exists(rngCompany) Then

d.Add rngCompany, Nothing

Else
End If
End If
Next rngCompany
End With

谁能看到其中任何一个出了问题?

最佳答案

您在自己的问题中隐藏了这个问题的答案(强调我的):

where I am trying to de-duplicate the rngCompany values


d.Exists(rngCompany)没有办法以您编写此内容的方式返回 true,因为您正在键入 Dictionary范围 ,而不是其内容。由于您正在测试的项目是迭代的一部分 For Each rngCompany In rngProject , 你保证只有不同的范围。

解决方案很简单——您需要显式调用 rngCompany 的默认成员:
If Not d.Exists(rngCompany.Value) Then
d.Add rngCompany.Value, i
i = i + 1
End If

关于excel - 删除重复的 VBA 脚本字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52757321/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com