У меня возникли проблемы с составлением кода, который позволяет мне просматривать состояние флажка и печатать указанный диапазон на другом листе, если флажок равен 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 равен true, то выведите диапазон "B53:U102", иначе End Loop
В настоящее время я получаю следующую ошибку: Ошибка времени выполнения «1004»: Исключение было вызвано целью вызова в строке, содержащей «Range («RangeSet» & r). Select
Любая помощь в поиске решения этой проблемы будет принята с благодарностью. Заранее спасибо.