首页 > 解决方案 > 将一维数组值应用于二维数组的 .NumberFormat 的代码

问题描述

我在一列(n 行长)中有一组格式,我想将其应用于表(13 cols xn 行)。列中存储的格式是动态的,并且基于数据类型,例如货币、百分比等。例如: #,##0;[Red](#,##0);"-"0.0%;[Red]0.0%;"-"

我希望在更新列时对表格的每一行进行格式化。注意:我对条件格式不感兴趣。

我最初尝试直接引用rng2as in,row.NumberFormat = rng2但这似乎陷入了一个永无止境的循环。

Sub formatrows()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim row As Range
    Dim i As Integer
    Set rng1 = Range("Ac7:ao400")
    Set rng2 = Range("d7:d400")
    i = 0
    Range("AC7").Select
    'rng1.ClearFormats
    For Each row In rng1.Rows
        row.NumberFormat = ActiveCell.Offset(i, -25)
        i = i + 1
    Next row
End Sub

这就是我想出的似乎可行但相当笨重的方法,我确信有更好的方法来做到这一点?

标签: excelvba

解决方案


简化一点:

Sub formatrows()
    Dim rng1 As Range
    Dim row As Range

    Set rng1 = Range("Ac7:ao400")
    'rng1.ClearFormats
    For Each row In rng1.Rows
        row.NumberFormat = row.EntireRow.Cells(4).value 'take format from ColD
    Next row

End Sub

推荐阅读