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