【发布时间】:2020-03-09 20:34:11
【问题描述】:
我正在尝试找出一种方法来增加/减少所选范围(一个或多个可能具有多种不同格式的单元格)的小数位数。
到目前为止,我的代码如下:
Dim myformat As String
Dim cell As Range
Dim val As Variant
For Each cell In Selection
val = cell.Value
myformat = cell.NumberFormat
If IsDate(val) = False Then
If InStr(1, myformat, ".") > 0 Then
myformat = myformat & "0"
Else
myformat = "0.0"
End If
End If
cell.NumberFormat = myformat
Next cell
一般来说,它可以工作,但不是全部。我需要它做的是适用于百分比,一般,数字格式以及公式(不是直接放置单元格值)和自定义格式(无论我多么努力,我都无法绕过它......)。 当看到单元格包含时间/日期格式时,代码不应该工作(应该退出 sub 或什么都不做)(我设法做到了)。
如您所见,我的编码方式(我正在努力学习)是通过读取现有格式并根据需要更改它来简单地编辑 NumberFormat。这适用于简单格式,但是当与自定义格式结合使用时?它只是不起作用。
有没有人有任何想法我该如何继续我的想法?任何帮助深表感谢! 预先感谢任何愿意在这方面帮助我的人。我每天都在 VBA 中变得更好,但还没有那么好;)
【问题讨论】:
-
这将非常棘手。我认为与其检查不是什么,不如检查你喜欢的模式,然后添加小数。例如,看起来像
"000"#的 NumberFormat code 不一定会像您期望的那样受益。 -
请显示所需的最终结果
-
“技巧”是我将其作为一个未解决问题发布的原因 :) NautMeg 我无法显示最终结果,因为这将能够简单地增加/减少任何数字格式的小数,同时忽略时间/日期类型。 @Marcucciboy2 这是我正在考虑的一种方式......但可能有几十种不同的自定义格式,我将仅限于我指定的几个......我正在寻找更“通用”的东西使用:)