我有一個Excel工作表,其中包含一列中的一些字符串。有時所有條目的是相同的,有時不是:在VBA函數中傳遞Excel範圍,按數組處理並返回結果
我寫的函數傳遞的範圍內作爲一個參數:
= Dent_WG(A1:A6)
VBA函數應確定哪種情況爲真(所有條目=「A1」或至少一個條目=「Ag」),然後分別返回0或12:
Function DentWG(WG_Mat As Range) As Single
Dim dat As Variant, rw As Variant, temp As Single
dat = WG_Mat
temp = 0
For rw = LBound(dat, 1) To UBound(dat, 1)
If dat(rw, 1) = "Ag" Then
temp = 12
End If
Next
If temp = 12 Then
DentWG = 12
Else
DentWG = 0
End If
端功能
然而,函數總是返回0,即使對於其中「銀」的範圍內發生第二殼體。我確信我無法正確地將範圍轉換爲數組或正確地將預期的邏輯應用於該數組。我的代碼有什麼問題?
當然!那個我太快了!不能刪除一個被接受的內容,雖然... – assylias
@assylias:你仍然可以更新你的答案:) –
@Siddharth路過:+1和檢查。感謝這兩個解決方案。他們都爲我工作得很好。我自己的解決方案,我已經在上面糾正過了,也適用。我看到你的解決方案調用Application.WorksheetFunction。在我的簡單應用程序中,資源不是問題,但一般來說:在VBA代碼中調用Application.WorksheetFunction比在嚴格遵循VBA方法的情況下更耗費資源? – jmaz