2017-04-15 29 views
1

我想验证两列值 - 如果值为真,那么它应该显示警报消息。验证两列值

Sub sal() 
Dim a As Long 
Dim b As Long 
a = Range("x3", Range("x3").End(xlDown)).Value 
b = Range("w3", Range("w3").End(xlDown)).Value 
If a = 100 And b <> " " Then MsgBox "already acheived" 
End If 
End Sub 

它显示运行时错误13.

+0

如果你的错误是在'If'声明,这是因为你已经声明'b'是数字的(键入'Long'),然后尝试将它与''“'(一个'String')进行比较。你也有一个没有相应的If的'End If',但这可能就是代码被粘贴到问题中的方式(也就是'MsgBox'与'If'不同的行)。 – YowE3K

回答

1

您已经声明A和B,只要和他们都应该持有多头数据类型的一个值。

但在下面的代码行...

a = Range("x3", Range("x3").End(xlDown)).Value 
b = Range("w3", Range("w3").End(xlDown)).Value 

您正在尝试与多个单元格范围的值分配给他们两个。

你应该使用这样的......

a = Range("x3").Value 
b = Range("w3").Value 

另外,作为YowE3L提到,检查变量b是这样的...

b <> 0 
+1

当我在寻找错误时,我完全忽略了多单元格的范围 - 看起来很棒! – YowE3K

+0

我错过了你指出的其他两个部分。所以这是一个完美的团队工作。 :) – sktneer

+0

我怀疑单行-v-块'If'问题可能只是在问题中,而不是在原始代码中。 (在我编辑之前,问题中的最后一行最初是'End If End Sub',但是我发现并拆分了它,因为这显然是不可能的 - 因此另一行可能只是一个类似的问题。) – YowE3K