2011-07-21 44 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,所以這段代碼可能有一些語法錯誤,但它應該讓你朝着正確的方向前進。