При закрытии файла восстанавливаются ширины столбцов(при каждом закрытии- листов в полтора десятка)...максимально пробую ускорить файл, есть ли возможность восстановление всех листов прописать в одном макросе....скорости не много вроде выиграю но мелочь вроде но будет приятно несколько макросов последовательно запускаемых с расчетами формул объединил в один и померял таймером разница в 40% порадовала...но может сам где то тупил)
При закрытии файла восстанавливаются ширины столбцов(при каждом закрытии- листов в полтора десятка)...максимально пробую ускорить файл, есть ли возможность восстановление всех листов прописать в одном макросе....скорости не много вроде выиграю но мелочь вроде но будет приятно несколько макросов последовательно запускаемых с расчетами формул объединил в один и померял таймером разница в 40% порадовала...но может сам где то тупил)Gjlhzl
Можно Ваш макрос перенести в модуль книги и пробежаться по всем листам [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long, sh As Worksheet Dim ar_Spl Dim dbW
ar_Spl = Split(Worksheets("3").Range("A1").Value, " ") Application.ScreenUpdating = False For Each sh In Worksheets For i = 1 To UBound(ar_Spl) dbW = CDbl(ar_Spl(i)) sh.Columns(i).ColumnWidth = dbW Next i Next sh Application.ScreenUpdating = True
End Sub
[/vba]
Можно Ваш макрос перенести в модуль книги и пробежаться по всем листам [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long, sh As Worksheet Dim ar_Spl Dim dbW
ar_Spl = Split(Worksheets("3").Range("A1").Value, " ") Application.ScreenUpdating = False For Each sh In Worksheets For i = 1 To UBound(ar_Spl) dbW = CDbl(ar_Spl(i)) sh.Columns(i).ColumnWidth = dbW Next i Next sh Application.ScreenUpdating = True
Pelena, спасибо был занят не сразу смог ответить возможно некорректно задачу поставил на листе 3, в ячейках А1 записываются ширина столбцов Листа1(1), в ячейке В1 - ширина столбцов Листа2(2) в ячейке D1 -- ширина для Лист4 ну и тд соответственно попорядку........ можно что то придумать?
Pelena, спасибо был занят не сразу смог ответить возможно некорректно задачу поставил на листе 3, в ячейках А1 записываются ширина столбцов Листа1(1), в ячейке В1 - ширина столбцов Листа2(2) в ячейке D1 -- ширина для Лист4 ну и тд соответственно попорядку........ можно что то придумать?Gjlhzl
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long, n As Long Dim ar_Spl Dim dbW
Application.ScreenUpdating = False
For n = 1 To Worksheets.Count If Worksheets("3").Cells(1, n).Value <> "" Then ar_Spl = Split(Worksheets("3").Cells(1, n).Value, " ") For i = 1 To UBound(ar_Spl) dbW = CDbl(ar_Spl(i)) Sheets(n).Columns(i).ColumnWidth = dbW Next i End If Next n Application.ScreenUpdating = True
End Sub
[/vba]
Тогда так можно попробовать [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long, n As Long Dim ar_Spl Dim dbW
Application.ScreenUpdating = False
For n = 1 To Worksheets.Count If Worksheets("3").Cells(1, n).Value <> "" Then ar_Spl = Split(Worksheets("3").Cells(1, n).Value, " ") For i = 1 To UBound(ar_Spl) dbW = CDbl(ar_Spl(i)) Sheets(n).Columns(i).ColumnWidth = dbW Next i End If Next n Application.ScreenUpdating = True