需要IF基金声明的帮助

时间:2014-08-19 13:33:11

标签: excel excel-vba vba

我有这个单元格,不能包含0,负数a" dot"例如。 1.2,并且不能为空。

到目前为止,我编写了以下代码:

If ThisWorkbook.Sheets("Indata").Range("$C$9").Value = 0 Then
MsgBox "Var vänligen ange en höjd för pelaren som är större än 0"
Exit Sub
If ThisWorkbook.Sheets("Indata").Range("$C$9").Value < 0 Then MsgBox "Var vänligen ange en höjd för pelaren som är större än 0"
Exit Sub
If ThisWorkbook.Sheets("Indata").Range("$C$9").Value = "" Then MsgBox "Var vänligen ange en höjd för pelaren"
Exit Sub
End If

但是术语:If ThisWorkbook.Sheets("Indata").Range("$C$9").Value = "" Then MsgBox "Var vänligen ange en höjd för pelaren"不起作用,因为当单元格C9为空时,会出现消息Var vänligen ange en höjd för pelaren som är större än 0 - 这是错误的消息。

我没有插入if语句,这会阻止用户插入点号并需要一些关于如何编写它的帮助。

感谢任何帮助,谢谢。

/ Rinor

2 个答案:

答案 0 :(得分:3)

问题是单元格的值可以解释为空字符串或0。这是基于您正在进行的比较类型隐式的。

当您将空变量值与数字进行比较时,会有隐含的类型转换以避免不匹配错误。同样,与字符串比较时,空变量将转换为nullstring。

将变量声明为字符串以表示单元格的内容。

Dim clValue as String

clValue = Cstr(ThisWorkbook.Sheets("Indata").Range("C9").Value)

If clValue = vbNullString Then 
    MsgBox "Var vänligen ange en höjd för pelaren"
    Exit Sub
End If
If clValue = "0" Then
    MsgBox "Var vänligen ange en höjd för pelaren som är större än 0"
    Exit Sub
End If
If CLng(clValue) < 0 Then 
    MsgBox "Var vänligen ange en höjd för pelaren som är större än 0"
    Exit Sub
End If

再添加一个测试来检查点/句点/小数:

If Instr(1, clValue, ".") <> 0 Then
    MsgBox "this cell cannot contain decimal numbers" 'Modify as needed
    Exit Sub
End If

答案 1 :(得分:1)

空白的测试作为三者的第一次测试。

例如:

Sub ytrewq()
With ThisWorkbook.Sheets("Indata")
    If .Range("$C$9").Value = "" Then
        MsgBox "Var vänligen ange en höjd för pelaren"
        Exit Sub
    End If
    If .Range("$C$9").Value = 0 Then
        MsgBox "Var vänligen ange en höjd för pelaren som är större än 0"
        Exit Sub
    End If
    If .Range("$C$9").Value < 0 Then
        MsgBox "Var vänligen ange en höjd för pelaren som är större än 0"
        Exit Sub
    End If
End With
End Sub