数字格式错误地更改为时间/日期

时间:2016-12-08 15:42:39

标签: excel excel-vba vba

我有一个包含多种格式的电子表格,主要是时间和整数。存在数据验证以确保正确的格式。可以选择某些字段,VBA以编程方式将系统时间插入所选单元格。这非常有效,在使用此工作表时非常有用。如果意外选择了应该具有整数(并且绝对不是时间)的单元格,则会出现问题,然后运行“输入系统时间”代码。这会将该单元格的格式更改为时间/日期。换句话说,A1格式化为Number,0位小数。选择A1并运行“输入系统时间”宏。宏不受数据验证规则的影响,否则会禁止除1到999之间的整数之外的任何内容。现在VBA(某种程度上)改变了格式,当你输入5(以前)数字时 - 格式化的单元格,显示为1/5/1900 0:00。因为这是一个编译的工作簿,所以这种变化是永久性的;单元格格式无法更改。 所以,我的问题是:有解决方法吗?有没有办法防止这种格式变化?如果格式错误,有没有办法解锁单元?是否有任何建议的方法来避免这种情况?

2 个答案:

答案 0 :(得分:1)

您可以使用NumberFormat对象的Range属性检查格式是否为包含0位小数的数字,如:

If Range("A1").NumberFormat = "0" Then
    'Some Code
End If

检查https://msdn.microsoft.com/pt-br/library/office/ff196401.aspx以获取有关格式的更多信息

答案 1 :(得分:0)

终于得到了这个。正确的数字格式化命令是:     如果Selection.NumberFormat =“[$ -409] h:mm AM / PM; @”那么......

相关问题