Excel VBA для каждого цикла рабочего листа (запускать один и тот же код макроса VBA на нескольких листах)

У меня есть Рабочая тетрадь с 3 рабочими листами с разными данными. И теперь я пытаюсь выполнить один и тот же код для каждого из рабочих листов (объединить конкретные слова с данными из 1,3 столбцов, а затем транспонировать диапазон из 3 ячеек из строк в столбцы). Приведенный ниже код на самом деле не делает то, что мне нужно. Это просто сделать правильно для последнего листа, а затем скопировать этот результат на другие листы. Но мне нужен уникальный результат для каждого листа. Любая помощь очень ценится!

Option Explicit

Sub forEachWS()
    Dim wb                  As Workbook
    Dim ws                  As Worksheet

Set wb = ActiveWorkbook

For Each ws In wb.Worksheets
    ws.Columns("G:J").Clear
    Call execute(ws)
Next
End Sub

Sub execute(ws As Worksheet)
    Dim intLastRow          As Long
    Dim intR                As Long
    Const intStartRow       As Integer = 2
    Dim destRow             As Long

With ws

  intLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

  destRow = 2

  For intR = intStartRow To intLastRow
      .Range("G" & intR) = "ID =" & Cells(intR, 1).Value
      .Range("H" & intR) = "[FROM].[#" & Cells(intR, 3).Value
      .Range("I" & intR) = "END"
      .Range("G" & intR & ":I" & intR).Copy
      .Range("J" & destRow).PasteSpecial Transpose:=True
      destRow = destRow + 3
  Next
End With
End Sub

1 ответ

Я был удивлен, но это работает, если:

Cells(intR, n).Value

заменить на:

Range("Colmn" & intR).Value
Другие вопросы по тегам