【发布时间】:2014-08-20 15:31:06
【问题描述】:
有一个简单的问题。 VBA 中的 Array() 函数是否返回二维数组?我正在尝试使用此函数创建一个一维数组并在 filter() 函数中使用它,但它显示“类型不匹配”。如果是这种情况,我该如何强制 Array() 创建一维数组?
Sub tester()
Dim xWorkb As Excel.Workbook
Dim xFiles_target() As String
Dim file_path As String
xFiles_target = Array("Bella.xls", "Fizz.xls", "Milo.xls")
file_path = Dir("C:\Users\hans\Desktop\")
Do While Len(file_path) > 0
Debug.Print file_path
If UBound(Filter(xFiles_target, file_path)) >= 0 Then
Debug.Print "found " & file_path
End If
file_path = Dir
Loop
End Sub
【问题讨论】:
-
Array 返回一维数组。你用的是什么代码?
-
然后查看@paulfrancis 的答案 - 这是因为您将
xFiles_target()声明为字符串 -
是的 - 你不能像这样将一组值与单个值进行比较。
-
@uncool - 因为过滤器永远不会为真。过滤器函数将与数组中的元素进行比较。该数组由值组成(只是文件名的值)。 Bella.xls,其中 file_path 包含更多内容。因此,如果我的理解是正确的,您必须在文件名之前包含文件路径。或者你必须从文件路径中去掉文件名,然后与数组进行比较。
-
file_path 中的 Dir() 将返回 \desktop\ 目录中的任何下一个文件。当找到 bella.xls 时,这只会说字符串 Bella.xls (没有别的)。根据我的理解,使用 desktop\ 相当于使用 desktop\"" 迭代目录中的所有文件。