Vba 无法准确地生成条件语句

Vba 无法准确地生成条件语句,vba,excel,Vba,Excel,我正在尝试创建一个宏,它将(有条件地)从工作表中获取值,并在即时窗口中打印它。我希望我的宏只选择那些在范围(“A1”)中仅为0的值,然后它将查找两列偏移量(在同一行中),以查看字段是否为空。如果是,则将打印范围(“A1”)和范围(“B1”)的值。如果不满足该条件,它将忽略该行并转到下一行以获得正确的匹配,直到它达到范围“A4”)。我错在哪里?提前谢谢 这就是我正在尝试的: Sub testing() Dim cNo As String, cName As String For Ea

我正在尝试创建一个宏,它将(有条件地)从工作表中获取值,并在即时窗口中打印它。我希望我的宏只选择那些在
范围(“A1”)
中仅为
0
的值,然后它将查找两列偏移量(在同一行中),以查看字段是否为空。如果是,则将打印范围(“A1”)和范围(“B1”)的值。如果不满足该条件,它将忽略该行并转到下一行以获得正确的匹配,直到它达到范围“A4”)。我错在哪里?提前谢谢

这就是我正在尝试的:

Sub testing()
   Dim cNo As String, cName As String

   For Each cel In Range("A1:A4")
           If cel.Value = 0 And cel.Offset(, 2) = "" Then
                cNo = cel.Value
                cName = Replace(cel.Offset(0, 1).Value, " ", "+")
            End If

            Debug.Print cNo, cName
    Next cel
End Sub
我在尝试这些价值观:

ColumnA  ColumnB        ColumnC
0        HERSHE ST  
2816     SHERWICK ST    FRANKLIN JANICE
8034     ANTOINE DR     MALDONADO JESUS
0        ELLINGTON ST   
此宏正在打印以下内容(重复第一个,直到另一个匹配):

我的预期产出:

0             HERSHE+ST


0             ELLINGTON+ST

正如我所说的,我不知道为什么要使用Immediate窗口,但是为了获得想要的结果,需要将结果包含在If语句中,并添加一个Else子句,如果不满足条件,该子句将插入一个空行

Option Explicit

Sub testing()

Dim cNo As String, cName As String, cel As Range

For Each cel In Range("A1:A4")
    If cel.Value = 0 And cel.Offset(, 2) = "" Then
        cNo = cel.Value
        cName = Replace(cel.Offset(0, 1).Value, " ", "+")
        Debug.Print cNo, cName
    Else
        Debug.Print ""
    End If
Next cel

End Sub

不要认为即时窗口可以做到这一点(我自己从来没有尝试过)-为什么要用它来格式化结果而不是工作表或消息框?我也在
工作表和
Msgbox中尝试过。输出总是相同的。您的
Debug.print
行需要在If语句中(但是如果没有Else子句,您将无法获得中间的空格)。
Option Explicit

Sub testing()

Dim cNo As String, cName As String, cel As Range

For Each cel In Range("A1:A4")
    If cel.Value = 0 And cel.Offset(, 2) = "" Then
        cNo = cel.Value
        cName = Replace(cel.Offset(0, 1).Value, " ", "+")
        Debug.Print cNo, cName
    Else
        Debug.Print ""
    End If
Next cel

End Sub