Сделал на vba скрытие столбцов с датами (~1500 столбцов), чтобы оставались видимыми только в заданом диапазоне (в примере - 10 дней от сегодня). Скрытие происходит каждый раз при изменении значейний в A2:B2, при этом перед сктытием открываются все столбцы. Скрытие происходит через ColumnWidth = 0.
Вопрос: это только у меня оно подтормаживает (от 3-5-15 сек) или так и должно быть? Есть ли способ ускорить этот макрос?
День добрый,
Сделал на vba скрытие столбцов с датами (~1500 столбцов), чтобы оставались видимыми только в заданом диапазоне (в примере - 10 дней от сегодня). Скрытие происходит каждый раз при изменении значейний в A2:B2, при этом перед сктытием открываются все столбцы. Скрытие происходит через ColumnWidth = 0.
Вопрос: это только у меня оно подтормаживает (от 3-5-15 сек) или так и должно быть? Есть ли способ ускорить этот макрос?
А если наоборот - все скрывать, а потом нужное открывать? И не циклом, а все сразу. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim st0_, a_, b_ If Not Application.Intersect(Range("A2:B2"), Target) Is Nothing Then a_ = Range("A2") b_ = Range("B2") If a_ = "" Or b_ = "" Then Exit Sub If Not IsDate(a_) Or Not IsNumeric(b_) Then Exit Sub On Error Resume Next Application.ScreenUpdating = 0 Range("dates").EntireColumn.Hidden = True st0_ = 3 + a_ - Range("C2") Cells(2, st0_).Resize(, b_).EntireColumn.Hidden = False Application.ScreenUpdating = 1 End If End Sub
А если наоборот - все скрывать, а потом нужное открывать? И не циклом, а все сразу. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim st0_, a_, b_ If Not Application.Intersect(Range("A2:B2"), Target) Is Nothing Then a_ = Range("A2") b_ = Range("B2") If a_ = "" Or b_ = "" Then Exit Sub If Not IsDate(a_) Or Not IsNumeric(b_) Then Exit Sub On Error Resume Next Application.ScreenUpdating = 0 Range("dates").EntireColumn.Hidden = True st0_ = 3 + a_ - Range("C2") Cells(2, st0_).Resize(, b_).EntireColumn.Hidden = False Application.ScreenUpdating = 1 End If End Sub