Здравствуйте, друзья! У пользователей часто встречаются трудности с тем, что если они ставят защиту на лист, то макрос перестает работать. А вот у меня другая проблема)) Как защитить лист от макроса? Смысл в том, что макрос работает на все листы, но иногда требуется, скрыть определенные листы. Но когда я просто скрываю лист, то макрос все равно его видит! Что делать надо? править макрос или есть какой то еще инструмент? Помогите кому не лень)
[vba]
Код
Sub ertert() Dim wsh As Worksheet, dt As Date, x, y(), i&, k& dt = Range("A1").Value Intersect(ActiveSheet.UsedRange.Offset(1), [B:F]).ClearContents
For Each wsh In ThisWorkbook.Sheets If Not wsh Is ActiveSheet Then x = wsh.Range("I1").CurrentRegion.Value If Not IsEmpty(x) Then k = 0 ReDim y(1 To UBound(x), 1 To 5) For i = 1 To UBound(x) Step 2 If x(i, 1) = dt Then k = k + 1 y(k, 1) = dt y(k, 2) = x(i + 1, 1) y(k, 3) = x(i, 2) y(k, 4) = x(i + 1, 2) y(k, 5) = wsh.Name End If Next i If k > 0 Then Cells(Rows.Count, 2).End(xlUp)(2, 1).Resize(k, 5).Value = y() End If End If Next wsh
With Range("B1:F" & Cells(Rows.Count, 2).End(xlUp).Row) .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, _ Key2:=.Cells(1, 2), Order2:=xlAscending, Header:=xlYes End With End Sub
[/vba]
Здравствуйте, друзья! У пользователей часто встречаются трудности с тем, что если они ставят защиту на лист, то макрос перестает работать. А вот у меня другая проблема)) Как защитить лист от макроса? Смысл в том, что макрос работает на все листы, но иногда требуется, скрыть определенные листы. Но когда я просто скрываю лист, то макрос все равно его видит! Что делать надо? править макрос или есть какой то еще инструмент? Помогите кому не лень)
[vba]
Код
Sub ertert() Dim wsh As Worksheet, dt As Date, x, y(), i&, k& dt = Range("A1").Value Intersect(ActiveSheet.UsedRange.Offset(1), [B:F]).ClearContents
For Each wsh In ThisWorkbook.Sheets If Not wsh Is ActiveSheet Then x = wsh.Range("I1").CurrentRegion.Value If Not IsEmpty(x) Then k = 0 ReDim y(1 To UBound(x), 1 To 5) For i = 1 To UBound(x) Step 2 If x(i, 1) = dt Then k = k + 1 y(k, 1) = dt y(k, 2) = x(i + 1, 1) y(k, 3) = x(i, 2) y(k, 4) = x(i + 1, 2) y(k, 5) = wsh.Name End If Next i If k > 0 Then Cells(Rows.Count, 2).End(xlUp)(2, 1).Resize(k, 5).Value = y() End If End If Next wsh
With Range("B1:F" & Cells(Rows.Count, 2).End(xlUp).Row) .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, _ Key2:=.Cells(1, 2), Order2:=xlAscending, Header:=xlYes End With End Sub