Excel文件中的工作表是动态的。我有一个按钮,可以使用新名称创建工作表。
可以动态选择工作表吗?或者不知道床单的名称。
这是我的vba代码,用于打印特定范围的单元格
Private Sub CommandButton1_Click()
Sheets("-32628").Select
range("A1:BZ18").Select
ActiveSheet.PageSetup.PrintArea = "A1:BZ18"
ActiveWindow.SelectedSheets.PrintOut from:=1, To:=1, Copies:=1, Collate _
:=True
End Sub
我要选择的是Sheetname: -32628
,而不必输入工作表的实际名称?
答案 0 :(得分:3)
我有一个按钮,可以使用新名称创建工作表。
如果要在按钮中创建工作表,则非常简单。在代码顶部声明一个工作表对象,以便其他过程可以访问它,然后使用它。例如
Dim ws As Worksheet
Private Sub CommandButton1_Click()
If Not ws Is Nothing Then
ws.PageSetup.PrintArea = "A1:BZ18"
ActiveWindow.SelectedSheets.PrintOut _
from:=1, To:=1, Copies:=1, Collate:=True
End If
End Sub
Private Sub CommandButton2_Click()
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "-32628"
End Sub
答案 1 :(得分:2)
首先Avoid using Select in Excel VBA。这会大大减慢您的代码速度,这是非常糟糕的做法。
而不是直接引用您的工作表,例如,而不是ActiveSheet
:
Worksheets("-32628").PageSetup.PrintArea = "A1:BZ18"
有3种方式引用工作表:
通过其可见的标签名称
Worksheets("YourSheetName")
通过其标签位置
Worksheets(1) 'first sheet in tab list
使用其VBA名称
Sheet1 'note that 1 is not the position of the sheet in the tab list. It's just a name.
Worksheets("Sheet1")
和Worksheets(1)
和Sheet1
可以是3个完全不同的工作表。我建议不要使用数字,并给它们起不同的名称,因为数字很容易引起混淆。