У меня есть некоторый макрос, который запускается на моем текущем листе, но я бы хотел, чтобы он просматривал все вкладки в моей книге одним нажатием кнопки. Его цель - заменить все значения, указанные в f5, на значения в f6 в ячейках A2:C100.

Это текущий код:

Sub try()
Range("A2:C100").Select
    Selection.Replace What:=Range("f5").Value, Replacement:=Range("f6").Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Sub Button4_Click()

End Sub

1 ответ1

0

Я предполагаю, что F5 и F6 относятся к фиксированному листу Скажите «Лист1» в моем примере. Таким образом, несмотря на то, что в вашем словаре может быть несколько листов, функция «Найти и заменить» всегда относится к Листу 1!F5 & Sheet1!F6 например.

Измените код на следующий. Это зациклит все листы текущей рабочей книги и выполнит код для каждой рабочей таблицы. В Sub Try() лист ссылается на его кодовое имя, например, Sheet1.Range в этом примере, а не фактическое имя листа.

Вы также можете объединить все в одном макросе.

Public Sub try()
ActiveSheet.Range("A2:C100").Select
    Selection.Replace What:=Sheet1.Range("f5").Value, Replacement:=Sheet1.Range("f6").Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub


Sub Button1_Click()
For Each WS In ThisWorkbook.Sheets
    WS.Activate
    Call try
Next WS
End Sub

Я не слишком уверен, может ли быть один однострочный код, но чтобы получить то же чувство, которое вы можете поместить: поместить все операторы в одну строку. Что-то вроде

Sub Button1_Click()
  For Each WS In ThisWorkbook.Sheets: WS.Activate:    Call try: Next WS
End sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .