提问人:Stefanie 提问时间:11/8/2023 更新时间:11/8/2023 访问量:43
Excel VBA函数如何检测单元格的numberformat是否为数字
Excel VBA function how to detect if numberformat of cell is number
问:
我想检测单元格是否具有 numberformat 编号。如果单元格未设置为 numberformat number,则应记录错误消息。 例如: 单元格 A1 的条目为 1000。检查应检测单元格格式是否设置为数字。不允许使用所有其他数字格式(如通用、百分比、货币等)。
使用函数 numberformat 进行检查适用于常规、百分比(格式代码“0.00%”)、科学等,但不适用于数字(格式代码“0”或“0.00”等)。
我尝试了这些功能(在缩短版本中):
- Cell.Numberformat = “0”
- Cell.Numberformat = “0,00”
- Cell.Numberformat = “0.00”
- Cell.Numberformat = “数字”
- Cell.Numberformat = “通用编号”
- Cell.Numberformat = “#.##0,00”
- Cell.Numberformat = “#,##0.00”
我的 Excel 语言中的正确分隔符是“,”,但使用英文写作时,该函数也不起作用。
尽管单元格中的数字值设置为正确的数字格式,但检查将返回 False。 此外,该检查通过上述函数与所有其他数字格式检查(例如 Cell.Numberformat = “General” 或 Cell.Numberformat = “0.00%”)一起使用,如百分比、科学、一般等
有人知道,我应该使用哪个检查功能?
答:
1赞
CLR
11/8/2023
#1
我过去做过这样的事情,您可能需要根据您的特定要求对其进行调整。
Function is_formatted_as_number(rng As Range) As Boolean
is_formatted_as_number = Not (rng.NumberFormatLocal Like "*[A-Za-z%]*")
End Function
它只是检查为文本或 % 符号的格式标签返回的文本。如果您愿意,您可以添加其他符号等,例如 £ $。
测试..
If is_formatted_as_number(ActiveSheet.Cells(1,1)) Then
...
Else
....
End If
评论
0赞
Stefanie
11/8/2023
非常感谢,函数表达式 NumberFormatLocal Like .....解决了我的问题!:)
评论
Dim tStr As String: tStr = Range("A1").NumberFormat
If Cell.Numberformat <> tStr Then ....