VBA работает только на текущем листе вместо всей книги - PullRequest
0 голосов
/ 13 января 2020

Мой код не будет работать на всей книге, только на той, на которой я активен. Я хочу, чтобы он запускался на каждом листе рабочей книги. Вероятно, это просто исправление

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 ]

1 голос
/ 13 января 2020

Вы определяете, что объект листа вызывает ws для вашего l oop, но вы его нигде не используете. Вы должны использовать его для определения вашего объекта Range при его установке. Вы также должны использовать его для определения ссылки на ячейки:

Обновите ее до:

Set Rng1 = ws.Range(Cells.Address)

или, возможно, до этого:

Set Rng1 = ws.Range(ws.Cells.Address)
1 голос
/ 13 января 2020

Set Rng1 = Range( нужно было Set Rng1 = ws.Range( Спасибо braX за ответ в комментариях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...