我有一个由可执行文件创建的excel工作簿,其中包含单独工作表中每月的数据。可执行文件的“工作表1”也包含列出的月份日期。我想写一个宏,它将根据'Sheet 1'中的日期显示/隐藏工作表。
对于Instance,如果Jan的月份数据显示为1,2,3,4,5,11,12天,那么宏应仅显示Day1,Day2,Day3,Day4,Day5和相应的工作表。隐藏第6天到第10天并显示第11天和第12天。任何指针都表示赞赏。
谢谢。
答案 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,所以这段代码可能会有一些语法错误,但它应该让你朝着正确的方向前进。