通过用户输入来设置打印区域的宏

时间:2018-10-30 15:51:10

标签: excel vba

这是我现在正在使用的代码。

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") 

并给了我一个语法错误。

1 个答案:

答案 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已经使用了该过程,并且很容易造成混淆。