gpt4 book ai didi

vba - Excel VBA - 检查组合列表值并添加(如果尚未添加)

转载 作者:行者123 更新时间:2023-12-02 11:13:01 26 4
gpt4 key购买 nike

有点不确定如何表达我的问题 - 所以如果它看起来有点模棱两可,我深表歉意。我似乎还有其他方法,例如检查多个组合框等,但没有任何与我正在寻找的内容具体相关的方法,不确定我是否正在尝试做一些不可能的事情。

我想要做的是检查组合框以查看值是否已存在,如果不存在则添加它。

工作簿打开并调用 UserForm1.show - 这会触发用户窗体初始化,设置一些文本框默认值(空并设置自动调整大小等内容),这非常有效,在此过程中我调用个人函数 DrpDwn_init - 这个想法是DrpDwn_init 在组合框中检查并设置值。我可以调用该函数,甚至可以让它添加值,但我不知道如何检查值是否已经存在。

我目前拥有的内容如下:

Public Function DrpDwn_Init()

Dim Templates() As String
Templates = Split("Stuff 1*Stuff 2", "*")

For i = 0 To UBound(Templates)
If Templates(i) <> UserForm1.DrpDwn_Templates.List(i) Then
MsgBox "Does Not match"
Else
MsgBox "Does Match"
End If
Next i

End Function

还尝试使用

For i = 0 To UBound(Templates)
If CStr(Templates(i)) <> UserForm1.DrpDwn_Templates.List(i) Then

For i = 0 To UBound(Templates)
If Templates(i) <> CStr(UserForm1.DrpDwn_Templates.List(i)) Then

For i = 0 To UBound(Templates)
If CStr(Templates(i)) <> CStr(UserForm1.DrpDwn_Templates.List(i)) Then

以及使用“UserForm1.DrpDwn_Templates.ListIndex(i)

我已经尝试了很多方法来解决这个问题,有时我得到的唯一错误是,突然间 Userform1.show 变得 Not Acceptable !?即使我从未接触过这部分代码。我真的不知道如何循环遍历数组,检查每个数组索引项以查看它是否存在于组合框中,并根据它是否存在来执行任务。

真的希望这里有人能帮助我解决这个问题(顺便说一句。我已经检查了我对函数等的所有代码引用是否正确,如果我在这里犯了拼写错误,我深表歉意。)

最佳答案

您不会每次都循环遍历下拉框中的所有项目。考虑以下示例

列表 1

Apples
Pears

列表 2

Oranges
Apples

您需要执行的检查如下:

Apples = Oranges (FALSE)
Apples = Apples (TRUE)
Pears = Oranges (FALSE)
Pears = Apples (FALSE)

所以这里的简单循环是这样的

For i = 1 to 2
For j = 1 to 2
if list1(i) = list2(j) then
inList = TRUE
End if
Next j
If inList = TRUE then
MsgBox "Found in the list"
End if
Next i

更新下面的代码应该适用于单个用户表单和该用户表单上的组合框(分别为 UserForm1 和 ComboBox1)

Sub test()

Dim i As Integer, j As Integer
Dim inList As Boolean
Dim vListItems As Variant, vTestItems As Variant, vItem As Variant

vListItems = Array("Apple", "Orange")
vTestItems = Array("Pear", "Apple")

'populate ComboBox1
For Each vItem In vListItems
UserForm1.ComboBox1.AddItem vItem
Next vItem

For i = 0 To UBound(vTestItems)
inList = False
'check if item is in your dropdown list already
For j = 0 To UserForm1.ComboBox1.ListCount - 1
If vTestItems(i) = UserForm1.ComboBox1.List(j) Then
inList = True
End If
Next j
'insert into list if not found
If inList = False Then
UserForm1.ComboBox1.AddItem vTestItems(i)
End If
Next i

UserForm1.Show

End Sub

关于vba - Excel VBA - 检查组合列表值并添加(如果尚未添加),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209506/

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