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