如何使用 VBA 对按钮进行编码?
How to code buttons with VBA?
我有一个按钮的 vba 脚本,它在我的工作簿中的每个 sheet 上放置一个按钮。我想对这些按钮进行编程,以便每次按下它们时,它们都会调用一个打印脚本,该脚本将在 sheet 上打印信息。这是我的按钮代码:
Sub AddButtons()
Dim ws As Excel.Worksheet
Dim btn As Button
For Each ws In ThisWorkbook.Worksheets
Set btn = ws.Buttons.Add(625, 0, 50, 25)
Call pageprintTEST1(ws)
Next ws
End Sub
这是我的打印脚本代码:
Sub pageprintTEST1(ws As Excel.Worksheet)
Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets(ws).Activate
With ActiveWorkbook.Worksheets(ws).PageSetup
.PrintArea = "A1:O48"
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
ActiveWorkbook.Worksheets(ws).PrintOut
我在这方面遇到了一些问题。首先,此脚本向每个 sheet 添加按钮,我只希望从 sheet 5 开始向 sheet 添加按钮(因此前 4 sheet 没有按钮).其次,在打开打印机对话框之前,它不会等我点击按钮,一旦你选择了一台打印机,它就会说错误不匹配。
我研究了如何将变量传递给不同的 sub 和 call 方法,这似乎是正确的,但现在我不确定哪里错了。如果有人有任何建议或知道该怎么做,我将不胜感激!
您需要使用按钮的OnAction
属性来存储宏名称,但您不能将对象变量传递给它。由于按钮只能在其 sheet 处于活动状态时才能单击,因此您可以使用:
Sub AddButtons()
Dim btn As Button
Dim n As Long
For n = 5 To ThisWorkbook.Worksheets.Count
Set btn = ThisWorkbook.Worksheets(n).Buttons.Add(625, 0, 50, 25)
btn.OnAction = "pageprintTEST1"
Next
End Sub
Sub pageprintTEST1()
Application.Dialogs(xlDialogPrinterSetup).Show
With ActiveSheet.PageSetup
.PrintArea = "A1:O48"
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
ActiveSheet.PrintOut
End Sub
我有一个按钮的 vba 脚本,它在我的工作簿中的每个 sheet 上放置一个按钮。我想对这些按钮进行编程,以便每次按下它们时,它们都会调用一个打印脚本,该脚本将在 sheet 上打印信息。这是我的按钮代码:
Sub AddButtons()
Dim ws As Excel.Worksheet
Dim btn As Button
For Each ws In ThisWorkbook.Worksheets
Set btn = ws.Buttons.Add(625, 0, 50, 25)
Call pageprintTEST1(ws)
Next ws
End Sub
这是我的打印脚本代码:
Sub pageprintTEST1(ws As Excel.Worksheet)
Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets(ws).Activate
With ActiveWorkbook.Worksheets(ws).PageSetup
.PrintArea = "A1:O48"
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
ActiveWorkbook.Worksheets(ws).PrintOut
我在这方面遇到了一些问题。首先,此脚本向每个 sheet 添加按钮,我只希望从 sheet 5 开始向 sheet 添加按钮(因此前 4 sheet 没有按钮).其次,在打开打印机对话框之前,它不会等我点击按钮,一旦你选择了一台打印机,它就会说错误不匹配。
我研究了如何将变量传递给不同的 sub 和 call 方法,这似乎是正确的,但现在我不确定哪里错了。如果有人有任何建议或知道该怎么做,我将不胜感激!
您需要使用按钮的OnAction
属性来存储宏名称,但您不能将对象变量传递给它。由于按钮只能在其 sheet 处于活动状态时才能单击,因此您可以使用:
Sub AddButtons()
Dim btn As Button
Dim n As Long
For n = 5 To ThisWorkbook.Worksheets.Count
Set btn = ThisWorkbook.Worksheets(n).Buttons.Add(625, 0, 50, 25)
btn.OnAction = "pageprintTEST1"
Next
End Sub
Sub pageprintTEST1()
Application.Dialogs(xlDialogPrinterSetup).Show
With ActiveSheet.PageSetup
.PrintArea = "A1:O48"
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
ActiveSheet.PrintOut
End Sub