Excel VBA if语句只输出0值

这是我正在使用的代码。 这是非常简单的,但仍然没有按预期工作。

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 

现在,它所做的只是抵消了2列,输出0.我无法区分为什么和我在这个心理绳索的末尾。 我敢肯定,这是一个简单的,我忽略的东西。

我已经试过了,它看起来像它正确评估我的示例中的每个值,但仍然给我0值。 另外,我正在玩弄引用,看看是否与之有关,但是我想与之合作。

谢谢你的帮助。

这是我的意思是删除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 

编辑:

到一个电脑程序,而且是一个比较运算符。 它不像人类那样理解它。 当与另一个人讨论时,我们可以用“和”来连接一系列的任务,并且不会有什么困惑(除非任务本身令人困惑!)。 计算机使用And检查多个条件是否同时为真。 在你最后的Elseif你正确地使用它来告诉计算机:“检查是否i.Value > 15检查是否i.Value =”* 5“如果BOTH(因为And语句)条件为真,则运行以下码。”

希望这有助于解释差异!

编辑2:

从@litelite的build议,使用Like运算符。

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

只是从@PartyHatPanda的背面去掉。 你可以使用ElseIf i.Value > 15 And Right(i.Value, 1) = 5 Then 。 这检查i.value的最后一位数字是否等于5.我这是你想要的?