如何在VBA中更改数组中数字的格式

我编写了一个简短的代码,将一些数字四舍五入到表中并将它们存储在数组对象中。我想为这些存储的数字设置自定义格式,但是我不确定如何设置,因为标准格式化方法不适用于数组。

我的代码如下所示:

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上找到答案。任何帮助我将不胜感激!

马修·金登(Mathieu Guindon)

数字及其表示形式是两个截然不同的东西。

您的数组包含Long(32位有符号整数)值,如果您打算存储而不是它们的表示形式,那么这就是您需要的一切

如果您需要一个数组,其中包含这些数字值的字符串表示形式(例如$0.3MM而不是300000),则不能将它们存储到中Long,则需要使用String

假设您有一个numbers包含Long整数数组您可以定义一个formattedNumbers包含String元素数组,然后使用该VBA.Strings.Format$函数(以及一些简单的数学运算)以任何需要的方式格式化数字值。使用看起来像您可以表示该值(除以一百万)格式字符串如下所示:$0.0MM300000$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章