Выбор нескольких столбцов, чтобы скрыть сразу - PullRequest
0 голосов
/ 03 октября 2018

Я запускаю отчет, в котором есть несколько столбцов, в которых сравниваются цифры за финансовый год.Например, с июля по август, с августа по сентябрь и т. Д. К сожалению, когда я делаю это вручную, мне приходится отображать все столбцы и скрывать столбцы, которые не использовались для завершения.Я автоматизирую этот отчет.На данный момент у меня есть все видимые столбцы.Из-за того, что в середине финансового года в моем отчете будут столбцы с левой и правой стороны необходимых данных.Я пытаюсь скрыть эти ненужные столбцы.

Я создал справочную строку (строка 1) с JAN, FEB, MAR и т. Д. Для справочных целей только для моего кода, поскольку создал пользовательскую форму, которая обнаруживает этизаписей.

Для данных, которые мне нужны в этом месяце, я выбрал указанную ячейку и сместил ее на единицу, чтобы выбрать первый столбец, который мне нужно будет скрыть.Как выбрать все столбцы из выбранного столбца в столбец A в моем сценарии?Ниже приведен код моего местонахождения:

With Worksheets("ACD")
 For counter = 1 To 200
    Set curcell = Worksheets("ACD").Cells(1, counter)
    If curcell.Value = FormMonth Then
    curcell.Offset(0, -1).EntireColumn.Select
    End If
  Next counter
End With

Спасибо за помощь!

1 Ответ

0 голосов
/ 03 октября 2018

Вот пример того, как скрыть несколько столбцов в зависимости от вашей ситуации:

Option Explicit

Public Sub HideMonthColumns()
    Dim workingDate As Date                      'filled in from your form?
    workingDate = #10/1/2018#                    'set for testing here

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("ACD")

    Dim lastCol As Long
    Dim workingCol As Long
    Dim i As Long

    With ws
        lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        For i = 1 To lastCol
            If .Cells(1, i) = workingDate Then
                workingCol = i
                Exit For
            End If
        Next i

        '--- hide all the columns to the left and right of the working column
        .Range(.Cells(1, 1), .Cells(1, workingCol - 1)).EntireColumn.Hidden = True

        '--- ... and hide all the columns to the right, checking for the edge
        If (workingCol + 9) < lastCol Then
            .Range(.Cells(1, workingCol + 9), _
                   .Cells(1, lastCol)).EntireColumn.Hidden = True
        End If
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...