Мурад, если Вы вводите макрос в PERSONAL, то это значит, что ВЫ сможете в книгах этим макросом закреплять только 2:2 Тогда уж лучше? наверное, ЭТОТ мой вариант применить, заменив ThisWorkbook на ActiveWorkbook. При работе макроса закрепляться будет по активной ячейке активного при вызове макроса листа.
Мурад, если Вы вводите макрос в PERSONAL, то это значит, что ВЫ сможете в книгах этим макросом закреплять только 2:2 Тогда уж лучше? наверное, ЭТОТ мой вариант применить, заменив ThisWorkbook на ActiveWorkbook. При работе макроса закрепляться будет по активной ячейке активного при вызове макроса листа.Alex_ST
Сейчас глянул на свой код и понял, что давно не писАл на VBA и немного перемудрил: можно запоминать адрес, а не столбец и строку и обращаться лучше по возможности по имени листа и по адресу - это быстрее чем Set Вот так будет корректнее и немного побыстрее:
[vba]
Код
Sub freezeAll3() Dim oSh As Worksheet, sAddr$, sSh0Name$, sAddr0$ Application.ScreenUpdating = False sSh0Name = ActiveSheet.Name: sAddr = ActiveCell.Address For Each oSh In ActiveWorkbook.Worksheets oSh.Activate: sAddr0 = ActiveCell.Address ActiveWindow.FreezePanes = False Range(sAddr).Activate: ActiveWindow.FreezePanes = True Range(sAddr0).Activate Next Worksheets(sSh0Name).Activate Application.ScreenUpdating = True End Sub
[/vba]
Сейчас глянул на свой код и понял, что давно не писАл на VBA и немного перемудрил: можно запоминать адрес, а не столбец и строку и обращаться лучше по возможности по имени листа и по адресу - это быстрее чем Set Вот так будет корректнее и немного побыстрее:
[vba]
Код
Sub freezeAll3() Dim oSh As Worksheet, sAddr$, sSh0Name$, sAddr0$ Application.ScreenUpdating = False sSh0Name = ActiveSheet.Name: sAddr = ActiveCell.Address For Each oSh In ActiveWorkbook.Worksheets oSh.Activate: sAddr0 = ActiveCell.Address ActiveWindow.FreezePanes = False Range(sAddr).Activate: ActiveWindow.FreezePanes = True Range(sAddr0).Activate Next Worksheets(sSh0Name).Activate Application.ScreenUpdating = True End Sub