2012-10-26 71 views
1

我已經查看了此處報告的ByRef錯誤,但仍無法找到我的方式的錯誤。Join()上的ByRef參數類型不匹配錯誤

我有這個,其中OrderedCaseList()是類型Variant的函數。它正確調用並按預期返回數組。

但是,當我嘗試編譯時,我在Join(arr...命令上得到「ByRef參數類型不匹配」。我不知道爲什麼...

Private Sub worksheet_Activate() 
Dim s As String 
Dim arr() As String 
Dim var As Variant 
Dim i As Long, j As Long 

var = OrderedCaseList(True) 
ReDim arr(0 To UBound(var)) 

j = UBound(var) 

For i = 0 To j 
    arr(i) = var(i) 
Next 

s = Join(arr, ",") 
Range("c16").Validation.Add Type:=xlValidateCustom, Formula1:=s 

End Sub 

代碼的最後兩行註釋掉時,變量表輸出爲:

OrderedCaseList, Type: Variant/Variant 
Expression:OrderedCaseList(0), Value:"Case 1", Type:Variant/String 
etc. 

Var, [email protected] Variant/Variant 
Expression: Var(0), Value:"Case 1", Type:Variant/String 
etc. 

arr, Type:String(0 to 3) 
Expression:arr(0), Value:"Case 1", Type:String 

任何幫助表示讚賞。

+0

我不能複製您的問題。你可能想嘗試一點也不打擾'arr'或'var'。你可以做's = Join(OrderedCaseList(true),「,」)'並跳過循環。假設沒有幫助,請介意分享OrderedCaseList的代碼? –

回答

0

你的代碼看起來不錯,我沒能打破它不管我怎麼設置功能OrderedCaseList(我不認爲問題反正)。

有沒有可能引用包含JOIN函數的第三方dll?

你可以驗證你是通過改變這一行調用VBA函數:

s = Join(arr, ",") 

這樣:

s = VBA.Strings.Join(arr, ",") 

,看看它是否編譯