nick7inc Цитата: если я делаю одинаковую операцию для N листов, например эту:
Мне думается, что в этом случае надо вставить операцию над листами в отдельную процедуру, которая в качестве параметров принимает координаты в какой-нибудь форме.
К сожалению я так и не понял как сделать отдельную процедуру-(
У меня есть скрипт для одного листа "SI", как мне применить его для еще 15-ти листов, которые я пропишу (это касается не всех листов книги)?
Sheets("Period").Select
Columns("K:AC").Select
Selection.Copy
Sheets("SI").Select
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Application.CutCopyMode = False
Dim r1 As Range, r2 As Range, r3 As Range, ws As Worksheet
Set ws = Workbooks("11.xls").Sheets("SI")
Set r1 = ws.Range(ws.Columns(21), ws.Columns(37))
Set r2 = ws.Range(ws.Columns(79), ws.Columns(95))
Set r3 = ws.Range(ws.Columns(105), ws.Columns(121))
r1.Copy r2
r1.Copy r3
Application.CutCopyMode = False
Set ws = Workbooks("11.xls").Sheets("SI")
Set r1 = ws.Range(ws.Columns(21), ws.Columns(23))
Set r2 = ws.Columns(8)
r1.Copy
r2.Insert Shift:=xlToRight
Application.CutCopyMode = False
Добавлено: то же самое (запустить процедуру на конкретных листах а не во всей книге) я хотел бы сделать и тут:
Public Mes As Integer
Sub Start()
Dim i As Long, j As Integer, Stolb As Long
Const Sdvig1 = 55
Const Sdvig2 = 81
Stolb = Mes + 27
Application.ScreenUpdating = False
For j = 2 To ActiveWorkbook.Sheets.Count
Sheets(j).Select
For i = 1 To ActiveSheet.Cells(65536, 28).End(xlUp).Row
If IsNumeric(Cells(i, 28)) And Cells(i, 28) <> "" Then
Cells(i, 2) = Cells(i, Stolb)
Cells(i, 3) = Cells(i, Stolb + Sdvig1)
Cells(i, 5) = Cells(i, Stolb + Sdvig2)
Cells(i, 12) = Application.Sum(Range(Cells(i, 28), Cells(i, Stolb)))
Cells(i, 13) = Application.Sum(Range(Cells(i, 28 + Sdvig1), Cells(i, Stolb + Sdvig1)))
Cells(i, 15) = Application.Sum(Range(Cells(i, 28 + Sdvig2), Cells(i, Stolb + Sdvig2)))
End If
Next i
Next j
Sheets(1).Select
End Sub
буду очень признателен за помощь.