数字格式被错误地更改为时间/date

我有一个包含多种格式的电子表格,大部分是时间和整数。 数据validation存在,以确保适当的格式。 可以select某些字段,VBA以编程方式将系统时间插入到选定的单元格中。 这完美的工作,是非常有用的,当使用这张表。 如果应该有一个整数(肯定不是一个时间)的单元格意外被选中,那么会出现这个问题,然后运行“input系统时间”代码。 这将该单元格的格式更改为时间/date。 换句话说,A1格式化为数字,小数点后0位。 A1被选中并且运行“input系统时间”macros。 该macros不受数据validation规则的影响,否则该规则将禁止除1至999之间的整数。现在,格式化由VBA(以某种方式)更改,例如,当您input5(以前)数字 – 格式化的单元格显示为1/5/1900 0:00。 因为这是一个编译的工作簿,所以这个改变是永久的; 单元格格式不能改回。 所以,我的问题是:是否有解决方法? 有没有办法来防止这种格式变化? 如果格式错误,是否有解锁单元格的方法? 有没有什么build议的方法来避免这种情况?

您可以使用Range对象的NumberFormat属性来检查格式是否为小数点后0位的数字,如下所示:

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

有关格式的更多信息,请参阅https://msdn.microsoft.com/pt-br/library/office/ff196401.aspx

终于明白了 正确的数字格式化命令是:如果Selection.NumberFormat =“[$ -409] h:mm AM / PM; @”然后…