Как заменить все ячейки на нескольких листах, кроме одной vba

#excel #vba #replace

Вопрос:

Что я хочу сделать, так это заменить все значения ячеек на нескольких листах, кроме одного. Так, например, есть листы лист1, лист2, лист3, и я хочу заменить все значения «M9» на «M8», но оставить M9 в листе 1 без изменений.

Это мой код:

 `For Each Worksheet in WorkSheets

     If Worksheet <> ThisWorkbook.Worksheets("Sheet1") Then
          Worksheet.Cells.Replace .....
     End if
 Next`
 

Для следующего, просто игнорируйте детали, поскольку они связаны с моим содержимым. Я думал, что эта логика была бы правильной, но vba продолжает выдавать ошибки.

Ты знаешь, почему? И есть ли какой-либо правильный способ заменить значения, исключающие Лист1?

Спасибо за вашу помощь

Комментарии:

1. Заменить (чем-то) или удалить их значение?

Ответ №1:

Если вы хотите очистить все содержимое ячеек, как я полагаю, пожалуйста, используйте следующий способ. Это также показывает способ замены:

 Sub RemoveCellsValue()
  Dim ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
     If ws.Name <> "Sheet1" Then
          ws.cells.ClearContents
          'or
          'ws.Cells.Replace "Oldstring","NewString" 'if you need replacing
     End If
 Next
End Sub
 

При замене функции требуются дополнительные параметры. Особенно для того, чтобы указать, нужно ли заменять, если найдена вся строка или только ее часть.

Комментарии:

1. @cycla Разве приведенный выше код не решил вашу проблему? По крайней мере, вежливо отправлять некоторые отзывы, когда вы задаете вопрос, и кто-то просит разъяснений и публикует ответ…

2. Извините за поздний ответ. Это тот ответ, который я так долго искал. Спасибо за вашу помощь.