我正在帮助更新其他人的VBA代码,因为他们被拉到了另一个项目。代码从输入表中读取数据,然后取消隐藏4个结果表单,填充它们,将它们保存为CSV文件,然后重新隐藏它们。
问题:其中一个数据条目是格式为## - #的数字,如20-2,13-5和12-1。 12-1就是问题所在。 Excel看到它并将其作为日期格式读取,并在我的结果表中打印1-Dec。
我尝试过的解决方案:我尝试在重新隐藏数据并更改格式之前停止程序,但它会丢弃数字。然后我也无法保存它,因为程序已中途运行,我不想保存这样的文档。然后,我尝试在程序运行并清除后取消隐藏工作表,但在程序运行后没有完全删除数据,当您尝试再次运行它时,它无法正确运行。最后我尝试取消隐藏程序之前甚至运行并将格式设置从“常规”更改为“文本”,但即使在保存和关闭后,它似乎也没有影响。
我的问题:首先,我正在更改格式吗?其次,有人知道如何以这种方式自动格式化excel。我已经在VBA工作了大约3个星期,之前只遇到过这个,但很容易修复。这个似乎没有遵循这种模式。
答案 0 :(得分:0)
因为我得到了答案,所以我认为我的第一个自我Q&现在,对于那些将来可能会遇到这种情况的人。感谢上述评论中的用户帮助我解决这个问题。像这样的代码行:
Dim variable1 As Variant
variable1 = Sheets("Sheet 1").Range("A1").Value
Sheets("Sheet 2").Range("A1").NumberFormat = "@"
Sheets("Sheet 2").Range("A1") = variable1
或者使用单元格选项,我们会看到如下代码:
Dim variable1 As Variant
variable1 = Sheets("Sheet 1").Cells(1,1).Value
Sheets("Sheet 2").Cells(1,1).NumberFormat = "@"
Sheets("Sheet 2").Cells(1,1) = variable1
这两个代码都维一个变量来存储来自Sheet 1的单元格A1,参考表2并将该单元格设置为新格式(使其格式化为数字而不是自动格式化),然后是最后一行新格式化的单元格等于变量中的值,但保留我们设置的新格式。