Excel VBA Array() 函数导致类型不匹配?

2024-01-18

我创建了以下函数来查找文件并在未找到文件时给出错误:

Public Function checkFileExistence(arrFileNames() As String, Optional bShowErrMsg As Boolean = False) As Boolean
' This function looks for every file name in arrFileNames and returns True if all exist else False
' Optional: bShowErrMsg = True will tell the user which file was missing with a MsgBox
Dim file As Variant

For Each file In arrFileNames
    If Len(Dir(file, vbNormal)) = 0 Then
        checkFileExistence = False
        If bShowErrMsg = True Then MsgBox (file & " was not found.")
        Exit Function
    End If
Next file
checkFileExistence = True
End Function

当我去调用它时,我收到类型不匹配错误。预定义数组以及尝试使用 Array() 函数时都会发生这种情况:

.
Dim filesToFind(1 To 3) As String
filesToFind(1) = "image.png"
filesToFind(2) = "test.png"
filesToFind(3) = "test.fred"

Debug.Print checkFileExistence(filesToFind, True)
Debug.Print checkFileExistence(Array("image.png", "test.png", "test.fred"), True)

如果 arrFileNames() 是 Variant,也会发生这种情况。我究竟做错了什么?


Array不返回类型化数组(例如String()).

更改您的签名以获取Variant反而:

Public Function checkFileExistence(arrFileNames As Variant, Optional bShowErrMsg As Boolean = False) As Boolean

并且您始终可以使用以下命令来验证您正在查看的是否是一个实际数组IsArray功能:

    If Not IsArray(arrFileNames) Then Err.Raise 5, "CheckFileExistence", "Expected array, but received a " & TypeName(arrFileNames) & "."

另外我强烈建议将您的循环更改为For...Next环形。数组不想被迭代For Each - see 本文 http://analystcave.com/vba-for-loop-vs-for-each-loop/.

For i = LBound(arrFileNames) To UBound(arrFileNames)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel VBA Array() 函数导致类型不匹配? 的相关文章

  • Perl:散列 2 中数组的数值排序(施瓦茨变换)

    这实际上是该线程的后续内容 Perl 散列中数组的数字排序 https stackoverflow com questions 7914931 perl numerical sort of arrays in a hash 我无法编辑原始问
  • 如何将32位VBA代码转换为64位VBA代码

    我正在尝试运行宏代码 但由于我使用的是 64 位 Excel 2016 因此该代码不起作用 请帮我解决这个问题 Private Declare Function FindWindowEx Lib User32 Alias FindWindo
  • 如何使用Python更改Excel中的列格式

    我想使用 openpyxl 方法将一张纸上的特定行和列复制到另一张纸上 但我的主要 Excel 文件是 xlsb 文件 而 openpyxl 不支持 xlsb 文件 所以我构建了这种复杂的方式 根据公司规则 我无法从 Microsoft E
  • SESSION 中存储的数组后面出现数字

    我正在对存储在会话变量上的数组执行 print r 由于某种未知的原因 它在数组打印后添加了一个数字 Example Array 0 gt 868 userid gt 868 1 如果我直接在函数本身中执行 print r 并且在变量存储在
  • int arr[ ] 是有效的 C++ 吗?

    我试图理解是否写作int arr 在 C 中有效 举个例子 int a is this valid extern int b is this valid int ptrB is this valid struct Name int k is
  • Delphi - 通过 ADO 查询获取 Excel 行

    我有以下 Excel 文件 我将 AdoConnection ConnectionString 设置为 AdoConnection ConnectionString Provider Microsoft Jet OLEDB 4 0 Data
  • Javascript 根据字段值任意排序数组

    所以我有一个对象数组 如下所示 var myArray priority low priority critical priority high 我需要以这种方式排序 1 关键 2 高和3 低 如何才能做到这一点 我建议使用一个对象来存储排
  • 如何在 VB.NET 中将 DataGridView 导出为 Excel 格式

    我使用 OLE 通过 VB NET 连接到数据库 并在 DataGridView 中显示结果 我想将 DataGridView 中的数据导出到 Excel 格式文件 即用户可以将 DataGridView 的内容保存为 MS Excel 文
  • Excel VBA 将范围值复制到数组,

    我有以下代码摘录 我试图将一系列值复制到声明的数组上 但它一直给我 无法分配给数组 错误 Dim permittedCurve 0 To 7000 As Variant permittedCurve activeWorkbook Works
  • 如何从 jQuery 获取 ajax 请求下载 Excel

    我有一个 Spring MVC 视图 它提供了一个 excel 文件 但是 我现在修改了该过程 以便用户获得一个模式框 他们可以在下载 excel 之前在其中选择一些选项 这些选定的选项将发送到视图 我的请求看起来像这样 get downl
  • 如何循环浏览文件夹内所有工作簿中的所有工作表

    我使用宏对计算机上给定文件夹中每个工作簿的每张工作表进行更改 事件顺序 打开用户选择的文件夹中的每个 Excel 文件 在工作簿中的每个工作表上执行任务 保存文件 关闭工作簿 宏不起作用 问题似乎是由Selection AutoFilter
  • 遍历 Excel 工作表

    这是我的代码 我是 VBA 新手 所以我不确定如何迭代多个页面 这是我的代码 Dim ws As Worksheet Sub spellCheck For Each ws In ActiveWorkbook Worksheets Cells
  • 将字符串中的一个字符替换为另一个字符

    我有如下数据 A B C D 我想更换C与数据 例如 Z 这样它可能看起来像 A B Z D 我该怎么做 SUBSTITUTE A1 C Z 虽然我不清楚你是否想要G or Z 你提到G但你的示例输出显示Z
  • jQuery 画廊用下一个和上一个按钮翻转

    我正在尝试用 jQuery 做某种 Gallery Turn Over 脚本 因此我得到了一个数组 比方说 13 图像 galleryImages new Array images tb 01 jpg images tb 02 jpg im
  • Excel VBA 检查工作簿是否打开,如果没有打开则打开

    我在下面放置的代码无法正常工作 尝试运行宏时出现错误 400 您能稍微回顾一下这段代码吗 我不确定问题是否不在于我所指的函数变量 Sub AutoFinal Dim final wb As Workbook shop stat wb As
  • Excel 对象库文件在哪里

    我正在寻找 Excel 对象库文件以将其导入 LabVIEW 我安装了 MS Office 2013 可以找到 MSACC olb MSOUTL olb MSPPT olb 和 MSWORD olb 但无法确定要导入哪个文件 olb 或 d
  • 强制 Excel 将多张纸作为单个作业打印

    在某些 Excel 2003 工作簿中 当我尝试print如果有多个工作表 Excel 将这些工作表视为单独的打印作业 这让我一直在编写的 Excel 自动化应用程序感到困惑 因为它会导致 Adob e PDF Printer 停止并询问用
  • 如何在 mongo shell 查询中仅投影嵌套数组的匹配字段

    我对 mongodb 相当陌生 我希望这是一个简单的问题 我有一个嵌套架构 其中有一个数组字段 其中该数组的每个项目都是一个本身具有数组字段的对象 例如 gt db mytest insert name a top x 1 y 2 nest
  • 创建并初始化具有连续名称的类的实例

    我有一个BankAccount班级 我试图创建这个类的多个实例并将它们放入一个数组中 例如 accounts Ba1 BankAccount new 100 Ba2 BankAccount new 100 我想初始化包含大量实例的数组 假设
  • 为什么数组不符合 Equatable,而它的项在 Swift 中是 Equatable?

    UPDATE 从 Xcode 9 3 开始 包括斯威夫特 4 1 数组相等按预期工作 并且原始问题中的代码编译没有错误 然而 请查看已接受的答案 因为它提供了更好 更现代的解决方案 原问题如下 当我尝试声明类型为泛型枚举的实例时 Post

随机推荐