Макрос для отображения / скрытия листа на основе значения даты - PullRequest
1 голос
/ 21 июля 2011

У меня есть книга Excel, созданная исполняемым файлом с данными по дням месяца на отдельных листах. На «Листе 1» исполняемого файла также указаны дни месяца. Я хотел бы написать макрос, который будет показывать / скрывать листы на основе даты в «Листе 1».

Для Экземпляра, если данные за январь имеют отображаемые дни 1,2,3,4,5,11,12, то в макросе должны отображаться только соответствующие рабочие таблицы для Дня 1, Дня 2, Дня 3, Дня 4, Дня 5 и скрыть с 6 по 10 день и показать 11 и 12 день Любые указатели приветствуются.

Спасибо.

1 Ответ

1 голос
/ 21 июля 2011
public sub setSheetVisiblity()

  'Load the data from sheet 1 into a collection
  'I'm making the assumption that you just have days listed horizontally from 
  '1A to 1*

  Dim currentColumn as Integer
  Dim activeDayCollection as Collection

  currentColumn = 1
  Set activeDayCollection = new Collection

  While Cells(currentColumn, 1).Value <> ""

    activeDayCollection.add Cells(currentColumn, 1).Value 

    currentColumn = currentColumn + 1
  Wend

  'Make every sheet invisible/visible
  For each currentWorksheet as Worksheet in Worksheets

    If currentWorksheet.Name == "Day" + activeDayCollection.Item 1 Then
      currentWorksheet.Visible = true
      activeDayCollection.Remove 1
    Else
       currentWorksheet.Visible = false
    End If

  Next currentWorksheet
end sub

Код работает исходя из предположения, что дни в вашем первом листе расположены в возрастающем порядке, листы называются Day ###, где ### - номер дня, и вам, вероятно, придется добавитьдругая строка, чтобы вручную показать ваш первый лист.У меня нет vba, поэтому у этого кода могут быть некоторые синтаксические ошибки, но он должен заставить вас двигаться в правильном направлении.

...