我这里是关键词是 "测试",逻辑是:现实情况中,不方便/不允许使用On Error的情况下,我们可换一个思路,可以判断是不是Nothing

业务场景(代码诞生原因):因为文件夹内有一堆表格,在要这一堆表格里面找是否含有别的厂家的名字...我有一百多个表格,一个个打开累死啦,所以就写了这个,替我进行搜索

说明文档:

1、仅对文件进行搜索,不会改动文件,保留文件完整性

2、中间加了分号,格式为:(工作簿;工作表;是否找到)加分号的意义在于方便分列,容易看出哪个表存在关键词

3、没有设定屏幕锁定,如果别人在你面前,屏幕不停闪烁运作,可以显得你很牛逼...

F、如果需更改关键词,直接把 “测试” 改成你需要的即可

5、如果需要其他的搜索条件,如搜索值,搜索公式等等,可以先录制宏,将Find代码替换掉即可~有问题亦可留言,看到会协助处理,谢谢~

6、目前仅适用于单层文件夹,不适合文件夹内嵌套文件夹的文件操作...递归我还不太会...

7、敲重点:请留意,因为个人本身业务场景情况需要,考虑到隐藏,和筛选等格式不规范,可能造成的影响,所以程序会取消筛选和隐藏

1、先说第一种情况:遍历所有工作表,是否存在某一个关键词

Sub VBA小程序_针对本工作簿所有工作表_搜索相关内容()
    Dim sht As Worksheet, a
    For Each sht In Worksheets
        sht.Activate
        '取消筛选,取消隐藏
        sht.AutoFilterMode = False
        Cells.EntireRow.Hidden = False
        Cells.EntireColumn.Hidden = False
        
        Set a = Cells.Find(What:="测试")
        'Debug.Print(),可以在立即窗口中查看返回内容,如果找不到,可以百度一下:VBA立即窗口怎么看,一看就会了?
        If Not a Is Nothing Then
            Debug.Print ( & ";" &  & ";找到")
        Else
            Debug.Print ( & ";" &  & ";找不到")
        End If
    Next
End Sub

2、第二种情况,再说遍历所有文件夹内所有文件,循环判断文件夹里 所有文件里面的 所有Sheet(工作表)是否存在某一个关键词(会弹窗提示用户选择文件夹路径,目前仅适用于单层文件夹,对于文件夹内还有文件夹的情况,暂时不适用)

Sub VBA小程序_遍历文件夹内所有文件_搜索相关内容()
    Dim myPath$, myFile$, myPath1$, myPath2$, WB As Workbook, new_book As Workbook, yes_no '这个$ 是相当于定义字符串
    
    '调用函数,获取用户选择的文件夹,并且在最后加上一个反斜杠,用于下面的文件列表获取
    myPath2 = ChooseFolder  '这里的路径是没有加入最后的"\"的
    myPath = myPath2 & "\"
    
    myPath1 = InStrRev(myPath2, "\") '从右向左查找"\",返回其所在的位置,返回值是一个数字,但是最后会变成一个字符串,所以定义的时候也定义了一个字符串
    If myPath1 = 0 Then
        myPath1 = ""    '如果找不到"\",那么就说明用户选择是主硬盘,如:C:\\等,这样就 返回空值
    Else
        myPath1 = Right(myPath2, Len(myPath2) - myPath1) & "_" '如果不是空值,那么就直接可以使用Right提取,使用最开始没有"\"的myPath2这个变量,
    End If
    
    myFile = Dir(myPath & "*.xls*") '依次找寻指定路径中的*.xls,或者xlsx文件
    
    Do While myFile <> "" '当指定路径中有文件时进行循环
        If myFile <>  Then     '如果我们这个宏文件在需要处理的文件夹之中,这个判断就会跳过下面的操作
            Set WB = Workbooks.Open(Filename:=myPath & myFile, UpdateLinks:=0) '打开符合要求的文件,并且如果遇到需要更新链接的时候,默认不更新
            Call 搜索确认
            WB.Close 0  '不保存关闭文件
        End If
        myFile = Dir '找寻下一个*.xls,或者xlsx文件
    Loop
    Set WB = Nothing    '释放变量内存
    MsgBox ("兄台,已完成")
End Sub

Public Function ChooseFolder() As String    '定义函数,用于下面的调用
    '定义并新建一个对话框对象
    Dim dlgOpen As FileDialog
    Set dlgOpen = Application.FileDialog(msoFileDialogFolderPicker)
    '如果当前没有对话框显示,就让他弹出对话框
    If dlgOpen.Show = -1 Then ChooseFolder = dlgOpen.SelectedItems(1)
    Set dlgOpen = Nothing
End Function

Function 搜索确认()
    Dim sht As Worksheet
    For Each sht In Worksheets
        sht.Activate
        '取消筛选,取消隐藏
        sht.AutoFilterMode = False
        Cells.EntireRow.Hidden = False
        Cells.EntireColumn.Hidden = False
        
        Set a = Cells.Find(What:="测试")
        If Not a Is Nothing Then
            Debug.Print ( & ";" &  & ";找到")
        Else
            Debug.Print ( & ";" &  & ";找不到")
        End If
    Next
End Function