Excel VBA不到If函数的末尾

Excel VBA不到If函数的末尾,excel,vba,Excel,Vba,我有一个宏,检查行是否为空,如果不是空,它会在单独的工作表上打印一个区域。我在下面尝试让计算机运行每一行并运行if测试。我希望它打印出两张纸(因为只有H2和H3有值),但它只打印第一行。让它打印两页(或者,填写的页数和行数一样多)我缺少什么 如上所述,如果连续解析,那么一旦找到第一个True语句,它就会执行该操作并跳过其余语句。您不需要ElseIf您需要单个If语句 If IsEmpty(Range("H2").Value) = False Then Worksheets("Documen

我有一个宏,检查行是否为空,如果不是空,它会在单独的工作表上打印一个区域。我在下面尝试让计算机运行每一行并运行if测试。我希望它打印出两张纸(因为只有H2和H3有值),但它只打印第一行。让它打印两页(或者,填写的页数和行数一样多)我缺少什么


如上所述,如果连续解析,那么一旦找到第一个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
...
但您可以使用循环:

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

这假定打印输出区域始终具有相同的大小和间距。

如前所述
如果
连续解析,因此一旦找到第一条正确的语句,它就会进行解析并跳过其余语句。您不需要
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
...
但您可以使用循环:

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

这假设打印输出区域总是相同的大小和间距。

这不是
ElseIf
的工作原理。。。看。这不是
ElseIf
的工作方式。。。看见