Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Восстановление ширины столбцов на листах оптимизировать - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Восстановление ширины столбцов на листах оптимизировать (Макросы/Sub)
Восстановление ширины столбцов на листах оптимизировать
Gjlhzl Дата: Четверг, 11.05.2023, 23:12 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

При закрытии файла восстанавливаются ширины столбцов(при каждом закрытии- листов в полтора десятка)...максимально пробую ускорить файл, есть ли возможность восстановление всех листов прописать в одном макросе....скорости не много вроде выиграю но мелочь вроде но будет приятно
несколько макросов последовательно запускаемых с расчетами формул объединил в один и померял таймером разница в 40% порадовала...но может сам где то тупил)
К сообщению приложен файл: 1135263.xlsb (457.0 Kb)
 
Ответить
СообщениеПри закрытии файла восстанавливаются ширины столбцов(при каждом закрытии- листов в полтора десятка)...максимально пробую ускорить файл, есть ли возможность восстановление всех листов прописать в одном макросе....скорости не много вроде выиграю но мелочь вроде но будет приятно
несколько макросов последовательно запускаемых с расчетами формул объединил в один и померял таймером разница в 40% порадовала...но может сам где то тупил)

Автор - Gjlhzl
Дата добавления - 11.05.2023 в 23:12
Pelena Дата: Пятница, 12.05.2023, 09:35 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19181
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Можно Ваш макрос перенести в модуль книги и пробежаться по всем листам
[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]
К сообщению приложен файл: 2011656.xlsb (365.9 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожно Ваш макрос перенести в модуль книги и пробежаться по всем листам
[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]

Автор - Pelena
Дата добавления - 12.05.2023 в 09:35
Gjlhzl Дата: Вторник, 16.05.2023, 20:00 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Pelena, спасибо был занят не сразу смог ответить
возможно некорректно задачу поставил
на листе 3, в ячейках А1 записываются ширина столбцов Листа1(1), в ячейке В1 - ширина столбцов Листа2(2) в ячейке D1 -- ширина для Лист4 ну и тд соответственно попорядку........
можно что то придумать?
 
Ответить
СообщениеPelena, спасибо был занят не сразу смог ответить
возможно некорректно задачу поставил
на листе 3, в ячейках А1 записываются ширина столбцов Листа1(1), в ячейке В1 - ширина столбцов Листа2(2) в ячейке D1 -- ширина для Лист4 ну и тд соответственно попорядку........
можно что то придумать?

Автор - Gjlhzl
Дата добавления - 16.05.2023 в 20:00
Pelena Дата: Вторник, 16.05.2023, 22:51 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19181
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Тогда так можно попробовать
[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

End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТогда так можно попробовать
[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

End Sub
[/vba]

Автор - Pelena
Дата добавления - 16.05.2023 в 22:51
Gjlhzl Дата: Воскресенье, 21.05.2023, 18:23 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Pelena, спасибо
 
Ответить
СообщениеPelena, спасибо

Автор - Gjlhzl
Дата добавления - 21.05.2023 в 18:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Восстановление ширины столбцов на листах оптимизировать (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!