我在解決類型不匹配時遇到問題,當在不同的工作簿中運行相同的代碼時。讓我們說練習冊1是原始練習冊,練習冊2是新練習冊。VBA類型不匹配在不同的工作簿中相同的功能
這兩個工作簿1 & 2具有相同的代碼(下面)Listbox_Refresh
子調用GetAccountRef()
函數。該代碼在工作簿1中運行良好,但在工作簿2中存在類型不匹配,我無法弄清楚原因。
我檢查了兩個工作簿中的VarTypes的GetAccountRef()
,它們是不同的。
對於工作簿1
這導致8204(的VBArray +變型)如預期:
Debug.Print VarType(GetAccountRef())
這導致8(字符串)如預期:
Debug.Print VarType(GetAccountRef(0))
For Workbook 2
這導致0(空):
Debug.Print VarType(GetAccountRef())
這導致錯誤類型不匹配:
Debug.Print VarType(GetAccountRef(0))
我試圖運行的函數是:
Function GetAccountRef() As Variant
On Error Resume Next
Dim Cell As Range
Dim Row_I As Range
Set Row_I = Sheet5.Range("9:9") '<- ERROR: This range does not contain "Date"
Dim Counter As Integer
Counter = 0
Dim Date_Ref() As Variant
For Each Cell In Row_I
If Cell = "Date" Then
ReDim Preserve Date_Ref(Counter)
Date_Ref(Counter) = Cell.Address
GetAccountRef = Date_Ref
Counter = Counter + 1
End If
Next Cell
On Error GoTo 0
End Function
和我想要使用此功能在For
循環,像這樣:
Dim ListedBnk As Variant
For Each ListedBnk In GetAccountRef()
ListedBnk = Replace(ListedBnk, "9", "7")
.ComboBox1.AddItem Range(ListedBnk)
.ComboBox2.AddItem Range(ListedBnk)
Next ListedBnk
謝謝!
取下上的錯誤繼續下一步 - 在那裏,它是如何失敗? –
由於GetAccountRef的值最終從Row_I範圍繪製,我懷疑該範圍在Workbook2中爲空。無論如何,我同意上面的評論,應該刪除錯誤陷印,並且應該逐步瀏覽代碼,以確切地查看它失敗的位置。 –
@TonyM是的,這的確是這樣,希望我早點看到您的評論! – AnthonyT