Скрыть столбцы за пределами выделения в Excel - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть простой VBA для выбора дат платежного периода в Excel на основе раскрывающегося списка. Как я могу скрыть все столбцы в диапазоне до и после выбранного периода оплаты?

  Private Sub CommandButton1_Click()

Dim ppe_start As Long
Dim ppe_end As Long

ppe_start = Range("B1")
ppe_end = Range("B2")

Columns("C:ER").Hidden = True

Range(Columns(ppe_start), Columns(ppe_end)).Select.Hidden = False

End Sub

Используя этот код, я получаю ошибку времени выполнения 424: требуется объект.

1 Ответ

0 голосов
/ 09 ноября 2018

Я полагаю, у вас есть настройки даты в раскрывающемся списке.

Данные моего примера выглядят так: enter image description here

Затем вы будете скрывать все столбцы, кроме столбцов между датой (B1) 2018-03-01 и (B2) 2018-07-01.

Я немного изменил ваш код, чтобы он был динамическим.

Код VBA:

Private Sub CommandButton1_Click()
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Sheet1") 'set Sheet name

Dim ppe_start As Date
Dim ppe_end As Date
Dim FoundStart As Long
Dim FoundEnd As Long

ppe_start = Range("B1") 'Set first date
ppe_end = Range("B2") 'Set last date

Columns.EntireColumn.Hidden = False 'Unhide all columns

With ws
    FoundStart = .Range("3:3").Find(What:=ppe_start, LookIn:=xlValues, LookAt:=xlWhole).Column - 1 'Find column number where First date exist in row 3
    FoundEnd = .Range("3:3").Find(What:=ppe_end, LookIn:=xlValues, LookAt:=xlWhole).Column + 1 'Find column number where Last date exist in row 3

    .Range(.Cells(3, "C"), .Cells(3, FoundStart)).EntireColumn.Hidden = True 'From Column C until Column First date, hide
    .Range(.Cells(3, FoundEnd), .Cells(3, "ER")).EntireColumn.Hidden = True 'From Column Last Date until Column ER, hide
    .Columns("B").ColumnWidth = 9.71 'To preserv the width of Column B, not necessary
End With
End Sub

Результат будет таким:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...