我在IF声明中遇到了麻烦

时间:2014-08-20 06:11:52

标签: excel excel-vba vba

我有一个非常好的代码,但是当我尝试实现一个小东西时,它没有按计划进行。代码如下所示:

 'Bredd byggnad
Dim clValue1 As String
clValue1 = CStr(ThisWorkbook.Sheets("Indata").Range("C10").Value)
If clValue1 = vbNullString Then
    MsgBox "Var vänligen ange en bredd på byggnaden"
    Exit Sub
End If
If clValue1 = "0" Then
    MsgBox "Var vänligen ange en bredd på byggnaden som är större än 0"
    Exit Sub
End If
If CLng(clValue1) < 0 Then
    MsgBox "Var vänligen ange en bredd på byggnaden som är större än 0"
    Exit Sub
End If

If InStr(1, clValue1, ".") <> 0 Then
    MsgBox "Denna cell får inte innehålla en punkt, ändra det till ett komma."
    Exit Sub
End If

'Längd byggnad
Dim clValue2 As String
clValue2 = CStr(ThisWorkbook.Sheets("Indata").Range("C11").Value)
If clValue2 = vbNullString Then
    MsgBox "Var vänligen ange en längd på byggnaden"
    Exit Sub
End If
If clValue2 = "0" Then
    MsgBox "Var vänligen ange en längd på byggnaden som är större än 0"
    Exit Sub
End If
If CLng(clValue2) < 0 Then
    MsgBox "Var vänligen ange en längd på11 byggnaden som är större än 0"
    Exit Sub
End If

If InStr(1, clValue2, ".") <> 0 Then
    MsgBox "Denna cell får inte innehålla en punkt, ändra det till ett komma."
    Exit Sub
End If

If clValue2 < clValue1 Then
    MsgBox "Längden på byggnaden måste vara större än bredden"
    Exit Sub
End If

问题出现在最后一个if语句中:

If clValue2 < clValue1 Then
    MsgBox "Längden på byggnaden måste vara större än bredden"
    Exit Sub
End If

我想要它做的是,如果单元格C11中的值小于单元格C10中的值,则退出sub。

非常感谢任何帮助。

/ Rinor

2 个答案:

答案 0 :(得分:2)

如果您在if声明之前放置以下内容:

MsgBox "[" & clValue1 & "]"
MsgBox "[" & clValue2 & "]"

然后你可能问题是什么。记下这些字符串变量中任何空格的特定注释。

很有可能,作为字符串,你会因为(例如)11被认为小于2而感到困惑,因为它使用字符串排序而不是数字排序。 / p>

如果的情况,你可以用简单的东西修复它:

If CDbl(clValue2) < CDbl(clValue1) Then

答案 1 :(得分:1)

小于操作符“&lt;”不适用于字符串。尝试使用CInt(clValue1)将它们转换为Integers。