【发布时间】:2019-01-16 12:25:40
【问题描述】:
逐个单元格地设置范围对象的属性非常慢。除非只是将数组的全部内容放入 .value
例如。 Range("A1:Z1000000").value = Arr
例如,如果要创建颜色图案,则必须逐个单元格设置它。这可能需要很长时间。而不是只是将颜色设置为数组并立即设置整个属性。
作为一个简单的测试,如果可能的话,我希望它可以工作,但不幸的是它没有。
Sub test()
Dim Arr1() As Variant, Arr2() As Variant
Dim y As Long, x As Long
Dim Redfnt As Variant, blkfnt As Variant
Redfnt = RGB(0, 0, 0)
blkfnt = RGB(255, 0, 0)
Arr1 = Selection.Value
ReDim Arr2(1 To UBound(Arr1, 1), 1 To UBound(Arr1, 2))
For y = 1 To UBound(Arr1, 2)
For x = 1 To UBound(Arr1, 1)
Arr1(x, y) = Arr1(x, y) * 2
If x Mod 2 = 0 Then
Arr2(x, y) = Redfnt
Else
Arr2(x, y) = blkfnt
End If
Next x
Next y
Selection.Value = Arr1
Selection.Font.Color = Arr2
End Sub
有谁知道这是否可行?
【问题讨论】:
-
不,这是不可能的。您可以做的最好的事情是制作两个单独的范围(每种颜色一个)并在完成构建后直接将颜色应用于每个范围。
标签: arrays excel vba performance optimization