#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. Извините за поздний ответ. Это тот ответ, который я так долго искал. Спасибо за вашу помощь.