2011-07-21 45 views
1

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

例如,如果1月份的数据显示有1,2,3,4,5,11,12天,那么宏应该只显示Day1,Day2,Day3,Day4,Day5的相应工作表并隐藏Day6至Day10并显示Day11和Day12。任何指针赞赏。

谢谢。

+0

到目前为止你有什么?创建宏的一个很好的起点是记录一个宏并执行你想要完成的操作。它会给你需要调用的函数提供很多输入 – Eddy

回答

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 

代码工作过,前提是你的第一张天都在增加订单,床单被命名为###天,其中###是天数,你可能会得添加另一行手动取消隐藏第一张表。我没有与我vba,所以这段代码可能有一些语法错误,但它应该让你朝着正确的方向前进。