【发布时间】:2015-08-19 05:12:09
【问题描述】:
我无法将一些代码放在一起,这些代码允许我查看复选框的状态并在复选框等于 true 时在另一个工作表上打印指定范围,然后针对给定数量的复选框重复该循环,并且范围。
我正在使用两个不同的 For - Next 循环来尝试完成这项任务。以下是我当前的代码。
Sub PrintGraphs()
Dim i As Integer
Dim r As Integer
For i = 16 To 18
If ActiveSheet.OLEObjects("CheckBox" & i).Object.Value = True Then
For r = 1 To 3
Worksheets("Cut Tables Graphs").Activate
Range("RangeSet" & r).Select
ActiveSheet.PageSetup.PrintArea = ("RangeSet" & r)
With ActiveSheet.PageSetup
.PaperSize = xlPaperLetter
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.LeftMargin = Application.InchesToPoints(0.25)
.RightMargin = Application.InchesToPoints(0.25)
.TopMargin = Application.InchesToPoints(0.25)
.BottomMargin = Application.InchesToPoints(0.25)
.CenterHorizontally = True
.CenterVertically = True
End With
Application.PrintCommunication = True
Selection.PrintOut Copies:=1, Collate:=True
Next r
End If
Next i
End Sub
我还在一个单独的模块上使用公共常量来定义变量“RangeSet”。该模块上的代码如下。
Public Const RangeSet1 = "B2:U51"
Public Const RangeSet2 = "W2:AP51"
Public Const RangeSet3 = "B53:U102"
我希望我的代码查看复选框 16 到 18,然后打印复选框值等于 true 的相应范围。
期望的结果:
如果复选框 #16 等于 true,则打印范围“B2:U51”,否则 Next i
如果复选框 #17 等于 true,则打印范围“W2:AP51”,否则 Next i
如果复选框 #18 为真,则打印范围“B53:U102”,否则结束循环
我目前遇到的错误是:运行时错误'1004':在包含“Range("RangeSet" & r).Select 的行上的调用目标已引发异常。选择
我们将不胜感激任何有关找到解决此问题的方法的帮助。提前谢谢你。
【问题讨论】: