需要IF声明的帮助

我有这个单元格不能包含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 -appears,这是错误的信息。

我没有插入if语句来防止用户插入点号,并且需要一些关于如何写入的帮助。

将不胜感激任何forms的帮助,谢谢。

/ Rinor

问题是单元格的值可能被解释为一个零string或0。这是基于您正在做的比较types的隐含。

当您将空的变体值与数字进行比较时,存在隐式types转换以避免不匹配错误。 同样,与string相比,空variables被转换为空string。

声明一个variables作为string来表示单元格的内容。

 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 

并添加一个testing来检查点/周期/小数:

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

作为三者的第一个testing,将testing空白

例如:

 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