不確定如何短語我的問題 - 所以我很抱歉,如果它似乎有點模糊。我似乎還有其他的方法,比如檢查多個組合框等,但沒有特別涉及到我正在尋找的東西,不確定我是否試圖做一些不可能的事情。Excel VBA - 檢查combolist值並添加(如果尚未添加)
我想要做的是檢查我的組合框,看看一個值是否已經存在,如果沒有,並添加它。
工作簿打開並調用UserForm1.show - 這會觸發Userform初始化設置一些文本框默認值(空和設置像autosize等)這很好,在這個過程中我稱之爲個人函數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變得不可接受!?即使我從來沒有碰過這部分代碼,我真的無法弄清楚如何循環訪問數組,檢查每個數組索引項以查看它是否存在於組合框中,並根據它是否是否執行任務。
真的希望有人輪在這裏可以幫助我搞清楚了這一點 (順便說一句,我已經檢查了我的所有代碼引用函數等是正確的,如果我在這裏做錯別字我道歉。)
我沒有意識到我需要循環瀏覽下拉菜單中的所有選項 - 我認爲這在事後看來是有道理的 - 代碼看起來很合理 - 我可以跟隨它發生的事情。 *按下輸入換行符 - 衛生署* 我已經嘗試了代碼,但我得到: 「運行時錯誤‘13’: 類型不匹配」 強調了: 對於j = 0到UserForm1.DrpDwn_Templates。 ListCount –
這可能是因爲.ListCount返回一個長整數,而i/j是一個整數。您可能想要將i/j聲明爲Long /查看是否可以找到更好的方法來獲取列表框中的項目總數,或者使用'cInt()'將表達式轉換爲整數 – CallumDA
我剛剛嘗試過做同樣的事情,但是: 'Dim m as int' 'm = UserForm1.DrpDwn_Templates.ListCount' 這也給類型不匹配? 加入'MsgBox UserForm1.DrpDwn_Templates.ListCount' 這顯示在一個msgbox中的列表計數 - 但然後由於某種原因拋出類型不匹配後,我確定MsgBox - 這真是莫名其妙,這似乎應該是一個相當簡單努力 –