使用数组设置Excel范围格式

Jon*_*ier 5 excel vba

过去,我使用变量数组来填充一系列多个Excel单元格.

我想知道,有没有办法用单元格格式做同样的事情?我宁愿不逐个细胞,最好尽量减少获得Excel范围的调用次数......

Lan*_*rts 3

@ExcelHero 已向我指出了如何完成此操作,因此方法如下。

如果您的范围是水平的,则只需向其提供一个由格式字符串构建的数组:

[a1:c1].NumberFormat = Array("hh:mm", "General", "$#,##0.00")   
Run Code Online (Sandbox Code Playgroud)

如果您的范围是垂直的,则转置该数组,因为 Excel 认为数组是水平的:

[a1:a3].NumberFormat = WorksheetFunction.Transpose(Array("hh:mm", "General", "$#,##0.00"))
Run Code Online (Sandbox Code Playgroud)

旧答案:

不,您不能单独执行每个单元格,但您可以将一种格式批量分配给整个范围。

要分配给的 Range 的属性是.NumberFormat。如果您创建一个字符串变体数组来分配为格式,然后将其分配给该范围,则仅应用第一个元素(并且它会应用于该范围的所有单元格)。

所以你能做的最好的就是循环:

Dim r As Range
Dim v(1 To 3) As Variant
Dim i As Integer

Set r = Range("A1:A3")
v(1) = "hh:mm:ss"
v(2) = "General"
v(3) = "$#,##0.00_);[Red]($#,##0.00)"

For i = 1 to 3
  r(i).NumberFormat = v(i)
Next i
Run Code Online (Sandbox Code Playgroud)