【发布时间】:2021-05-16 11:04:13
【问题描述】:
我正在开发一个 VBA 模块。我正在将字典的内容粘贴到工作表中,并且某些值会自动格式化。
我查阅了很多关于如何防止 Excel 自动格式化数据的文章。
在粘贴之前,我尝试通过“格式化单元格”将单元格格式化为常规、文本和(尝试的)自定义格式(例如 #"A")。
另外,我也尝试在粘贴之前通过文本到列格式化单元格。我在这里尝试了 General 和 Text。
最后,我尝试使用Selection.NumberFormat = "General" 和Selection.NumberFormat = "Text" 以及Selection.TextToColumns Destination:=Range("B:B"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, OtherChar _ :="=", FieldInfo:=Array(1, 2), TrailingMinusNumbers:=True
我什至尝试在自动格式化后进行查找和替换。例如,在粘贴和自动格式化之后,我会进行查找和替换以将“1:00:00 AM”更改为“1 Amps”,然后将“Amps”更改为“A”。这是为了看看我是否可以用我想要的替换选择中的部分字符串。那也没用。
受影响的值是安培额定值。例如,我正在执行查找和替换以将“1 Amp”更改为“1 A”。
无论我做什么,它都会将自动格式设置为“1:00:00 AM”这样的时间。
【问题讨论】:
-
您是否尝试在填充单元格之前将单元格的数字格式设置为文本? vba 类似于
Range("A1").NumberFormat = "@" -
成功了!谢谢@basodre!我对 VBA 不够精通,不知道修复它会那么容易。所以,我查了一下,“@”表示文本。为什么这行得通,我在格式化为文本方面尝试的所有其他方法都不起作用?另外,我假设这将采用我所有的字典键和项目,而不是应用任何自动格式化。对吗?
-
Text 只是将条目视为文本块,就像它本来的样子。当您选择不同的格式时,它仍然是一个数字,系统会尝试确定它应该是什么类型。
-
这是有道理的,但你是说像 Text-to-Columns 这样的东西只会选择不同的格式,不会改变元数据或单元格的(后端)格式?因为我在使用 Text-to-Columns 以及
.NumberFormat属性时选择了 Text。 -
@basodre 我无法将您的评论标记为答案。我想给你点赞,所以如果你能以一种我可以将其标记为答案的方式发布它,那就太好了!谢谢!
标签: excel vba autoformatting