这是我现在正在使用的代码。
Sub PrintArea()
Dim arange
Rows = InputBox("How many Rows do you want to print (Between 1 and 48)?", "Row Selection")
.PageSetup.PrintArea = .Range(A, B, C).Rows
End Sub
当我尝试运行宏时,出现“编译错误:无效或不合格的引用”,并在代码中突出显示了.Range。
我希望打印区域始终为A-C列,但行数将在2-48之间变化,具体取决于我要打印的内容。
编辑:单步执行代码,它停在此行
ActiveSheet.PageSetup.PrintArea = .Range(A:C, "arange")
并给了我一个语法错误。
答案 0 :(得分:1)
应该是这样的:
Option Explicit
Sub SetMyPrintArea()
Dim UserInput As Variant
Do
UserInput = Application.InputBox(Prompt:="How many Rows do you want to print (Between 1 and 48)?", Title:="Row Selection", Type:=1)
If VarType(UserInput) = vbBoolean And UserInput = False Then Exit Sub
DoEvents
Loop While UserInput < 2 Or UserInput > 48
Worksheets("Sheet1").PageSetup.PrintArea = "A1:C" & UserInput
End Sub
请注意,Do … Loop While UserInput < 2 Or UserInput > 48
会强制输入框再次出现,直到用户输入2…48之间的值为止。
此If VarType(UserInput) = vbBoolean And UserInput = False Then Exit Sub
用于检查用户是否按下了取消按钮,然后中止了操作。
不要命名您的过程PrintArea
,因为Excel PageSetup.PrintArea
已经使用了该过程,并且很容易造成混淆。