gpt4 book ai didi

VBA使用过滤器排除字符串数组中的项目

转载 作者:行者123 更新时间:2023-12-03 02:04:42 25 4
gpt4 key购买 nike

首先,如果下面的代码不包含数组而是列表,请原谅。我是 VBA 新手,所以我还不了解所有基础知识。下面的代码检索特定文件夹中所有 Excel 文件的数组(或列表)。该代码用于从每个文件中检索数据并粘贴到主文件中。
好的,这是我的 MWE:

    Sub ReadDataFromAllWorkbooksInFolder()
Dim FolderName As String, wbName As String, wbCount As Integer
FolderName = "C:\Users\Robin\Desktop\Test"
wbCount = 0
wbName = Dir(FolderName & "\" & "*.xlsm")
While wbName <> ""
wbCount = wbCount + 1
ReDim Preserve wbList(1 To wbCount)
wbList(wbCount) = wbName
wbName = Dir
Wend
If wbCount = 0 Then Exit Sub
End Sub

现在问题来了:数组包含一个模板文件,并且文件名包含单词TEMPLATE。如何过滤(或排除)文件名包含字符串“TEMPLATE”的文件?

任何帮助将不胜感激!提前致谢!

最佳答案

变量wbName包含来自Dir命令的文件名。检查字符串是否包含您想要排除的内容。

延长线

While wbName <> ""

进入

While wbName <> "" And InStr(1, UCase(wbName), "TEMPLATE") = 0

排除任何包含 TEMPLATE 的文件名,无论大小写。

编辑

我上面的建议中的逻辑是错误的,当遇到第一个包含“TEMPLATE”的文件名时它就停止了。请尝试以下操作:

    While wbName <> ""
'***** Only add to wbCount if wbName does not contain TEMPLATE
If InStr(1, UCase(wbName), "TEMPLATE") = 0 Then
wbCount = wbCount + 1
ReDim Preserve wbList(1 To wbCount)
wbList(wbCount) = wbName
End If
wbName = Dir
Wend

编辑2

有关查找错误的一些一般提示:

  • 始终在模块顶部使用Option Explicit。它将迫使您声明变量,从而最大限度地减少拼写错误等引入错误的风险。
  • 使用 F8 单步执行代码来识别错误并检查变量和函数的值
  • 如果可能,请删除代码以简化它,仅保留 While 循环和 If 语句等逻辑,以确保基础功能正常工作。然后添加回详细信息。

最后,我的解决方案的关键是找到名称中包含“TEMPLATE”的文件。对于在任何位置包含字符串“TEMPLATE”的所有文件,无论大小写,语句 InStr(1, UCase(wbName), "TEMPLATE") = 0 将为 False,并且否则True。 (Ucase 部分使语句不区分大小写。)

尝试将其添加到您的逻辑中。

关于VBA使用过滤器排除字符串数组中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com