For Loop的VBA Excel优化

时间:2014-10-10 02:21:36

标签: excel vba excel-vba

任何人都可以帮我找一个优化这段代码的好方法吗?请给我一个很好的建议。

With Selection
                .Value = "Apple"
                .Font.Bold = True
                .Offset(1).Value = "Orange"
                .Offset(1).Font.Bold = True
                .Offset(2).Value = "Strawberry"
                .Offset(2).Font.Bold = True
                .Offset(3).Value = "Pear"
                .Offset(3).Font.Bold = True
                .Offset(4).Value = "Pineapple"
                .Offset(4).Font.Bold = True
                .Offset(5).Value = "Grape"
                .Offset(5).Font.Bold = True
                .Offset(6).Value = "Banana"
                .Offset(6).Font.Bold = True
                .Offset(8).Value = "Durian"
                .Offset(8).Font.Bold = True
                .Offset(8, 1).Value = "Rambutan"
                .Offset(8, 1).Font.Bold = True
                .Offset(8, 2).Value = "Dragonfruit"
                .Offset(8, 2).Font.Bold = True
                .Offset(8, 3).Value = "Mango"
                .Offset(8, 3).Font.Bold = True
            End With

1 个答案:

答案 0 :(得分:3)

为您的水果创建一个源数组。

Dim fruits
fruits = Array("Apple", "Orange", ... , "Mango")

然后使用循环为Range指定值 你需要额外的变量。

Dim n As Long, fruit

With Selection: n = 0
    For Each fruit In fruits
        .Offset(n) = fruit: n = n + 1
    Next
    .Resize(n + 1).Font.Bold = True '~~> format in one go
End With

我不知道你是否会认为这个优化得足够好但HTH 顺便说一句,当你分配水果红毛丹时,我没有考虑专栏的转变。
我留给你。它可能需要另一个变量和 IF语句