我想在1D数组中搜索一个值,并且我一直在尝试使用过滤器函数执行此操作,但是当我编写一个小的子程序进行测试时,它不起作用,并且出现“类型不匹配”错误。

谁能告诉我这段代码有什么问题吗?

Dim range1() As Variant
range1 = Sheet4.range("B3:B7")

Dim string1 As String
string1 = "hello"

If UBound(Filter(range1, string1)) >= 0 Then
    Sheet4.range("A1").Value = "Hello exists."
Else
    Sheet4.range("A1").Value = "Hello does not exist."
End If


Hello在选定范围内出现一次,因此Ubound函数的结果应该为0,对吧?

最佳答案

您需要使用转置来创建超出范围的一维数组。 See this link

range1 = Application.Transpose(Sheet4.Range("B3:B7"))


按照MSDN的过滤器功能需要一维字符串数组。


需要。一维要搜索的字符串数组

关于excel - VBA中滤波器输出的UBound值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25055897/

10-15 14:02