【发布时间】:2021-02-01 16:17:49
【问题描述】:
我正在寻找一种创建切换的方法,我可以使用它来将单元格值更改为“常规”格式或“文本”格式,并使其显示为文本,而不是数字。
假设我有 3 个值: 2839283 8572839 5922038
我尝试过的(有效)是这样的:
Dim MyRng as Range
Dim MyCell as Range
Set MyRng = Selection
if MyRng.NumberFormat = "General" Then
For each MyCell in MyRng
MyCell.NumberFormat = "@"
MyCell.Value2 = CStr(MyCell.Value2)
next MyCell
Else
For each MyCell in MyRng
MyCell.NumberFormat = "General"
MyCell.Value2 = MyCell.Value2
next MyCell
End if
有什么方法可以在不使用 for 循环的情况下实现相同的目标?我正在努力提高效率,当这个宏应用于 20k 行时......嗯,它可以工作,但速度很慢。
我试图简单地调用:
MyRng.NumberFormat
MyRng.Value2
它适用于从文本到数字的转换,但遗憾的是它在尝试将数字转换为文本时显示不匹配错误(这就是我在那里使用循环的原因)。
有什么想法吗?
【问题讨论】:
-
不,那是pretty much it。