Excel VBA:将范围设置为激活工作表



我目前正在处理一个工作簿,其中所有工作表信息都存储在工作表中("概述"(。在"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。因此,不需要附加功能CCD_ 8
  • CCD_ 9是针对列CCD_ 11的CCD_。A是第一列,因此可选参数负责处理它
  • 如何避免在Excel VBA中使用Select(这是每个VBA人员的必读书目(

最新更新