VBA仅在当前工作表而不是整个工作簿上运行

时间:2020-01-13 01:20:20

标签: excel vba

我的代码不会在我一直活跃的那本工作簿上运行。 我希望它能在工作簿的每张纸上运行 可能只是一个简单的解决方法

Sub Remove_symbol()

'remove "Â" from data

    Dim ws As Worksheet
    Dim Rng1 As Range

For Each ws In ThisWorkbook.Worksheets

    Set Rng1 = Range(Cells.Address)

    Rng1.Replace What:="~Â", Replacement:="", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

'and duplicates

    Rng1.Replace What:="~(pH Unit)(pH Unit)", Replacement:="(pH Unit)", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    Rng1.Replace What:="~(µS/cm)(µS/cm)", Replacement:="(µS/cm)", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    Rng1.Replace What:="~(mg/L)(mg/L)", Replacement:="(mg/L)", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    Rng1.Replace What:="~(µg/L)(µg/L)", Replacement:="(µg/L)", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Next ws

End Sub

2 个答案:

答案 0 :(得分:1)

Set Rng1 = Range(必须为Set Rng1 = ws.Range( 感谢braX在评论中的回答

答案 1 :(得分:1)

您正在为循环定义一个工作表对象调用ws,但是您没有在任何地方使用它。设置它时,需要使用它来限定Range对象。您还应该使用它来限定您的单元格引用:

将其更新为此:

Set Rng1 = ws.Range(Cells.Address)

或可能这样:

Set Rng1 = ws.Range(ws.Cells.Address)