宏以根据日期值显示/隐藏工作表

时间:2011-07-21 17:00:53

标签: excel-vba export-to-excel vba excel

我有一个由可执行文件创建的excel工作簿,其中包含单独工作表中每月的数据。可执行文件的“工作表1”也包含列出的月份日期。我想写一个宏,它将根据'Sheet 1'中的日期显示/隐藏工作表。

对于Instance,如果Jan的月份数据显示为1,2,3,4,5,11,12天,那么宏应仅显示Day1,Day2,Day3,Day4,Day5和相应的工作表。隐藏第6天到第10天并显示第11天和第12天。任何指针都表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:1)

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,所以这段代码可能会有一些语法错误,但它应该让你朝着正确的方向前进。