Как указано IF
разрешается последовательно и как таковой, когда находит первое утверждение True, он делает это и пропускает остальные. Вы не хотите ElseIf
, вам нужны отдельные If
заявления.
If IsEmpty(Range("H2").Value) = False Then
Worksheets("Document").Range("A1:I45").PrintOut
End If
If IsEmpty(Range("H3").Value) = False Then
Worksheets("Document").Range("j1:r45").PrintOut
End If
...
Но вы можете использовать al oop:
Dim i As Long
For i = 2 To 9
If ActiveSheet.Range("H" & i) = "" Then
ActiveSheet.Range("A1:I45").Offset(0, (i - 2) * 9).PrintOut
End If
Next i
For i = 10 To 17
If ActiveSheet.Range("H" & i) = "" Then
ActiveSheet.Range("A51:I100").Offset(0, (i - 10) * 9).PrintOut
End If
Next i
Это предполагает, что область распечатки всегда одинакового размера и одинакового расстояния.