[英]Excel VBA: set a range as an activate sheet
我目前正在處理一個工作簿,其中所有工作表信息都存儲在工作表中(“概述”)。 在“A:A”列中,我有每個工作表的名稱。 我想要制作的是貫穿“A:A”列中列出的每個單元格的宏,並打印出該工作表。 打印代碼不是問題。 問題是我不知道將單元格稱為工作表。 我想出了這個解決方案,但我不起作用。
Worksheets(Range("A1")).Activate
是否有可能從單元格中引用激活工作表?
Worksheets(Range("A1").Value).Activate
如評論中所述,您的代碼將受益於在此處限定您的對象( Range("A1")
在哪張紙上?)。 最后,您很少需要激活工作表來對其執行操作。 只需跳過Activate
並直接跳轉到您的行動聲明
Dim ws As Worksheet
With ThisWorkbook 'or ActiveWorkbook, or ?
Set ws = .Worksheets(.Worksheets("Overview").Range("A1").Value)
End With
'do something with ws
以下代碼通過其名稱引用給定的工作表,在Worksheets("Overview")
A:A
列中寫入為文本:
Sub PrintWorksheetNames()
Dim myCell As Range
Dim lastCell As Long
lastCell = LastRow("Overview")
For Each myCell In ThisWorkbook.Worksheets("Overview").Range("A1:A" & lastCell).Cells
Dim wksName As String
wksName = myCell.Text
ThisWorkbook.Worksheets(wksName).Range("A1:C20").PrintOut Copies:=1, Collate:=True
Next
End Sub
Public Function LastRow(wsName As String, Optional columnToCheck As Long = 1) As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(wsName)
LastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
End Function
Public Function LastRow(wsName As String, Optional columnToCheck As Long = 1) As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(wsName)
LastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
End Function
ThisWorkbook.Worksheets("Overview").Range("A1:A" & lastCell).Cells
。ThisWorkbook.Worksheets("Overview").Range("A1:A8").Cells
。 因此不需要附加函數LastRow()
。lastCell
是A
列的LastRow()
結果。 A
是第一列,因此可選參數負責處理它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.