excel 循环遍历所有选定工作表的Vba代码

8gsdolmq  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(165)

我试图创建一个VBA代码,以搜索“B”列中的人员代码,并返回“D”列中的列偏移量,并用新的输入替换单元格的值。我设法做到了这一点,但我需要在所有选定的工作表中进行此操作。我不知道我做错了什么,因为当我选择几个工作表时,它只执行第一个工作表上的代码,而忽略其余部分。

https://drive.google.com/file/d/1Kdol7qnfgstSc0mWV5hN9X0O1PcVwsjx/view?usp=sharing

Sub RunCode()
    Dim rg As Range, c As Range
    Dim str As String
    Dim A As Variant
    Dim ws As Worksheet

    Set rg = ActiveSheet.Columns("B")
    str = "PEC-00" & Application.InputBox(Prompt:="ID: ")
    A = Application.InputBox(Prompt:="New Value: ")
    With rg
        Set c = .Find(str, , xlValues)
        
        Application.ScreenUpdating = False
        For Each ws In ActiveWindow.SelectedSheets
             ws.Select       
             c.Offset(, 2) = A
        Next ws
        Application.ScreenUpdating = True
        
    End With
End Sub

我试图将代码循环到所有选定的工作表,但代码仍然只在选定的第一个工作表上执行

xwbd5t1u

xwbd5t1u1#

Sub RunCode()
    Dim rg As Range, c As Range
    Dim str As String
    Dim A As Variant
    Dim ws As Worksheet

    Application.ScreenUpdating = False

    str = "PEC-00" & Application.InputBox(Prompt:="ID: ")
    A = Application.InputBox(Prompt:="New Value: ")
        
    For Each ws In ActiveWindow.SelectedSheets
        Set rg = ws.Columns("B")
        Set c = rg.Find(str, , xlValues)
        c.Offset(, 2) = A
    Next ws
        
    Application.ScreenUpdating = True
End Sub

注:这是未经测试的

相关问题