我有一个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