需要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