我编写了一个简短的代码,将一些数字四舍五入到表中并将它们存储在数组对象中。我想为这些存储的数字设置自定义格式,但是我不确定如何设置,因为标准格式化方法不适用于数组。
我的代码如下所示:
Dim i as long
Dim x as long
Dim RoundedAmounts (1 to 26) as long
for i = 1 to 26
x= range("I44").offset(i,0).value
if abs(x) < 150000
RoundedAmounts(i)=0
else
RoundedAmounts(i)=Application.WorksheetFunction.Round(x, -5)
end if
Next i
我是编码方面的新手,因此不确定这是否是一项显而易见的任务,但似乎无法在Google上找到答案。任何帮助我将不胜感激!
数字及其表示形式是两个截然不同的东西。
您的数组包含Long
(32位有符号整数)值,如果您打算存储值而不是它们的表示形式,那么这就是您需要的一切。
如果您需要一个数组,其中包含这些数字值的字符串表示形式(例如$0.3MM
而不是300000
),则不能将它们存储到中Long
,则需要使用String
。
假设您有一个numbers
包含Long
整数的数组。您可以定义一个formattedNumbers
包含String
元素的数组,然后使用该VBA.Strings.Format$
函数(以及一些简单的数学运算)以任何需要的方式格式化数字值。使用看起来像您可以表示该值(除以一百万)的格式字符串,如下所示:$0.0MM
300000
$0.3MM
Dim formattedNumbers(1 To 26) As String
Dim i As Long
For i = 1 To 26
formattedNumbers(i) = Format$(numbers(i)/1000000, "$0.0MM")
Next
但是,您很少需要在程序逻辑中使用数字的字符串表示形式:通常,您想要的是使代码使用原始数值,然后在可能的最后一刻格式化这些值,仅当用户需要查看它们。
如果是这样,那么您就不需要字符串数组;您只需要使用Format$(numbers(i)/1000000, "$0.0MM")
您想要显示的字符串值的输出即可;TextBox
例如一些控制。
如果您的输出实际上是一个工作表单元格/ a Range
,那么您可以将数值写入单元格中(如果您打算显示百万,则将其除以100万),然后将单元格的NumberFormat
属性设置为按以下格式自定义格式您的要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句