我有一个excel文件,我需要将自定义格式的列E编号更改为“常规”格式。
我想要实现的最终结果是两位数字的列必须更改为十进制格式(.000),但保持一般格式以便导入自定义程序。
目前,我的代码Columns("E").NumberFormat = ".000,"
效果很好,列显示为.010。
我尝试使用代码Columns("E").NumberFormat = "General"
添加一行来将代码更改回“常规”,但它会删除.000格式并返回两位数。
任何建议。
答案 0 :(得分:0)
我不相信你正在尝试的是可能的。两种格式之间的差异正是您所描述的。
答案 1 :(得分:0)
你正在从错误的一端解决问题。单元格的数字格式应该使自定义程序读取单元格值的方式完全没有区别......只要它正在读取单元格的值。
如果确实有所作为,那么自定义程序正在读取Range.Text
属性,这是表示的单元格值,使用单元格NumberFormat
进行格式化。
这意味着自定义程序将其读取的所有内容视为String
,然后将字符串解析为某个数值。这完全是倒退而且效率很低。
更改自定义程序以读取Range.Value
属性,即单元格的实际基础值* ,而不是表示 of it。
然后你可以在工作表上找到你想要的任何数字格式,什么都不会破坏 - 作为奖励你的自定义程序可以读取数字作为数字并且不需要解析小数分隔符并处理将所有内容视为String
所带来的巨大混乱,即无论其运行的机器的区域设置如何,它都能正常工作。
工作表本身及其上的数字格式不是问题。
* 键入值。如果单元格格式为货币,则值的类型将为Currency
。如果将其格式化为日期,则为Date
。这通常是您想要读取的内容 - 如果您需要实际的基础数值,请使用Value2
,而不进行任何类型转换。这会给你,例如43131
代表今天的日期。