Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何在多个工作表中同时搜索字符串?_Vba_Excel - Fatal编程技术网

Vba 如何在多个工作表中同时搜索字符串?

Vba 如何在多个工作表中同时搜索字符串?,vba,excel,Vba,Excel,我有大约30张表格,我想让这段代码同时运行。我想在所有工作表中找到“ABC”并删除它旁边单元格的值 我从以下位置获取错误:Set-rSearch=.*range**(“A1”、.range(“A”&rows.count).end(x1up)) 当我在“With”语句旁边指定了“Sheet1”时,它可以工作,但我希望此代码在我的所有工作表上运行 Sub soek() Dim rSearch As Range Dim rFound As Range Dim sign12 A

我有大约30张表格,我想让这段代码同时运行。我想在所有工作表中找到“ABC”并删除它旁边单元格的值

我从以下位置获取错误:
Set-rSearch=.*range**(“A1”、.range(“A”&rows.count).end(x1up))

当我在“With”语句旁边指定了“Sheet1”时,它可以工作,但我希望此代码在我的所有工作表上运行

Sub soek()

    Dim rSearch As Range
    Dim rFound As Range
    Dim sign12 As String
    Dim sheetsarray As Sheets
    Set sheetsarray = ActiveWorkbook.Sheets(Array("sheet1", "sheet2", "sheet3"))


    sign12 = "ABC"


    With sheetsarray
        Set rSearch = .Range("A1", .Range("A" & Rows.Count).End(xlUp))

        Set rFound = rSearch.Find(What:=sign12, LookIn:=xlValues)

        If rFound Is Nothing Then

        Else
            rFound.Offset(0, 1).ClearContents

        End If
    End With

End Sub
这个问题很像:

但在我看来,与上面链接中的代码相比,理解如何让代码在阅读我的代码的其他工作表上运行要容易得多

试试这个(上面评论的汇编;-)


为每个活页数组添加一个
,将带有
块的
放入其中。设置一个
工作簿
对象(即
设置oWB=ThisWorkbook
)。现在,您可以在一个循环中遍历所有工作表(即oWB中每个oWS的
。工作表
。将oWS设置为:
将oWS设置为工作表
),转到解决方案是每个循环的a,因为@GSerg和Zac建议您所描述的称为多线程,而AFAIK Excel VBA不支持它。。最好像前面所说的那样使用for-Each循环感谢所有的答案,但我不太确定“for-Each”解决方案是如何工作的。有没有可能让某人在代码中输入建议更改的Answare?(我从未为每个人使用过)
Sub soek()

Dim rSearch As Range
Dim rFound As Range
Dim sign12 As String
Dim oWB As Workbook
Dim oWS As Worksheet

Set oWB = ThisWorkbook

sign12 = "ABC"

For Each oWS In oWB.Sheets

With oWS
    Set rSearch = .Range("A1", .Range("A" & Rows.Count).End(xlUp))

    Set rFound = rSearch.Find(What:=sign12, LookIn:=xlValues)

    If rFound Is Nothing Then

    Else
        rFound.Offset(0, 1).ClearContents

    End If
End With

Next oWS

End Sub