我有这个不能包含 0 的单元格,一个负数是一个“点”,例如。 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 语句,并且需要一些关于如何编写它的帮助。
将不胜感激任何形式的帮助,谢谢。
/里诺
最佳答案
问题是单元格的值可以解释为空字符串或 0。这是隐含的,基于您正在执行的比较类型。
当您将空变量值与数字进行比较时,存在隐含的类型转换以避免不匹配错误。同样,与字符串相比,空变体将转换为空字符串。
将变量声明为字符串以表示单元格的内容。
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
关于excel - 在 IF 语句方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25384773/