Excel VBA if语句仅输出0值

1 excel vba excel-vba

这是我正在使用的代码.它非常简单,但仍未按预期工作.

Dim hey As Range
Set hey = Range("A1:A5")

For Each i In hey

If i.Value = "15" Then
i.Offset(0, 2).Value = "15" And i.Offset(0, 3).Value = "15"

ElseIf i.Value = 10 Then
i.Offset(0, 2).Value = "10" And i.Offset(0, 3).Value = "10"

ElseIf i.Value = 5 Then
i.Offset(0, 2).Value = "5" And i.Offset(0, 3).Value = "5"

ElseIf i.Value > 15 And i.Value = "*5" Then
i.Offset(0, 2).Value = "10" And i.Offset(0, 3).Value = "5"

Else: i.Offset(0, 2).Value = 10 And i.Offset(0, 3).Value = 10
End If
Next i
Run Code Online (Sandbox Code Playgroud)

现在,它所做的一切都是由2列和输出0抵消.我无法区分为什么和我在心理绳索的最后.我确信这是一件令人沮丧的事情.

我试过单步执行,它看起来像我的样本中的每个值正确评估,但仍然给我0值.此外,我正在玩引文,看看是否与它有关,但它们是我想要使用的字符串.

谢谢你的帮助.

Par*_*nda 6

这就是删除And语句的意思:

Dim hey As range
Set hey = range("A1:A5")

For Each i In hey

If i.Value = "15" Then
i.Offset(0, 2).Value = "15"
i.Offset(0, 3).Value = "15"

ElseIf i.Value = 10 Then
i.Offset(0, 2).Value = "10"
i.Offset(0, 3).Value = "10"

ElseIf i.Value = 5 Then
i.Offset(0, 2).Value = "5"
i.Offset(0, 3).Value = "5"

ElseIf i.Value > 15 And i.Value = "*5" Then
i.Offset(0, 2).Value = "10"
i.Offset(0, 3).Value = "5"

Else
i.Offset(0, 2).Value = 10
i.Offset(0, 3).Value = 10
End If
Next i
Run Code Online (Sandbox Code Playgroud)

编辑:

对于计算机程序,And是一个比较运算符.它不像人类那样理解它.在与另一个人讨论时,我们可以通过'和'将一系列任务链接在一起,并且不会混淆什么(除非任务本身令人困惑!).计算机用于And检查多个条件是否同时为真.在你最后Elseif你正确使用它来告诉计算机:"检查i.Value> 15,并检查i.Value='*5’.如果同时(因为的And语句)条件为真,那么运行下面的代码."

希望这有助于解释差异!

编辑2:

根据@litelite的建议,使用Like运算符.

ElseIf i.Value > 15 And i.Value Like "*5" Then
i.Offset(0, 2).Value = "10"
i.Offset(0, 3).Value = "5"
Run Code Online (Sandbox Code Playgroud)

  • 我认为向OP解释什么是`和'真正意味着什么是个好主意. (2认同)
  • @SsaSnakebite你不能在平等中使用通配符.它会检查是否有一颗星星.查看[like](https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx)运算符 (2认同)