我有这个单元格,不能包含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
答案 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