2015-09-09 101 views
0

我想通過索引在工作簿中引用表格。 - 基本上就像我想通過循環運行並清除幾個工作表上的某些單元格一樣。通過變量引用工作表

目前我已經寫了一些VBA,它包括類似的代碼:

Sheet36.Activate 範圍( 「B3:T201」)。clearContents中

每次重複對於每個片,例如: Sheet37.Activate Range(「B3:T201」)。ClearContents

所有答案讚賞。

+0

因此,你想循環遍歷每張紙,然後使用if語句或case select語句來確定要在任何給定紙張上清除的內容? –

回答

0

澄清補充感謝ExcelHero。

你可以使用你所感興趣的特定工作表的集合是這樣的:。

Private mChosenSheets As Collection 

Sub Init() 
    Set mChosenSheets = New Collection 

    ' Add here whichever worksheets you want in your iterable list 
    mChosenSheets.Add Sheet6 
    mChosenSheets.Add Sheet36 
    mChosenSheets.Add Sheet38 
    ' etc... 

End Sub 

Sub ClearChosenSheets() 
    Dim sht As Worksheet 

    For Each sht In mChosenSheets 
     sht.Range("B3:T201").ClearContents 
    Next 

End Sub 

,如果你只是想通過工作簿中的每個工作表遍歷的Workbook.Worksheets集合都可以使用。

+1

工作簿中的每個工作表都已經是兩個內置集合的成員:「表格」和「工作表」。在這個問題上公開將它們添加到另一個集合中的目的是什麼? –

+0

我不認爲Op想要迭代Workbook對象的Worksheets集合(即每個工作表)。我想他想要遍歷他生成的特定工作表的列表(即只有一些工作表)。這個答案意在向他展示一種將這些工作表添加到他自己的可迭代集合中的方法。 – Ambie

+0

謝謝大家。第二種解決方案更符合我的需要(因爲我只想清除特定的紙張)。 – Werdna

1

如果你只是要清除的範圍中的幾頁紙,可以很容易地引用它們都在同一時間,像這樣:

Sheets(Array("Sheet36", "Sheet37").Range("B3:T201").ClearContents 

但是,如果你真的想所有環路的然後這是如何:

Dim sh 
For Each sh In Worksheets 
    sh.Range("B3:T201").ClearContents 
Next