excel - 在 IF 语句方面需要帮助

标签 excel vba

我有这个不能包含 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/

相关文章:

excel - 获取Windows显示缩放值

c# - 为什么 EPPlus 告诉我 "Can' t set color when patterntype is not set"当我设置了 PatternType 时?

excel - 格式化后查找/替换未找到单元格值

vba - Excel 索引/目录 - 宏

vba - 如何将单引号和逗号添加到列中的所有值?

Excel 2010 宏有运行时错误 -2147467259 (80004005) : Invalid parameter

VBA:将工作表作为函数的参数时如何寻址正确的工作簿?

excel - 如何使用vba将工作表复制到另一个工作簿?

excelcnv 命令行选项

excel - 如果内容被用户删除,则使用 VBA 填充单元格