繁体   English   中英

Excel VBA缩短代码以将值从一个范围复制到另一个范围

[英]Excel VBA shorten code to copy values from one range to another

我已经获得了一个包含以下代码的Excel工作簿,并想知道如何缩短它以使其更易于管理。 代码重复将值从一个命名范围中的某些单元格复制到另一个命名范围中的某些单元格,并复制字体和填充颜色。 代码比这长(遵循相同的模式,命名范围递增1)所以我确信有更好的方法来编写它。

Private Sub Copy_Jobs()

Worksheets("Sales").Range("Week1")(1).Cells.Value = Worksheets("Tasks").Range("Job1")(1).Cells.Value
Worksheets("Sales").Range("Week1")(2).Cells.Value = Worksheets("Tasks").Range("Job1")(2).Cells.Value
Worksheets("Sales").Range("Week1")(3).Cells.Value = Worksheets("Tasks").Range("Job1")(3).Cells.Value
Worksheets("Sales").Range("Week1")(4).Cells.Value = Worksheets("Tasks").Range("Job1")(5).Cells.Value
Worksheets("Sales").Range("Week1").Font.Color = Worksheets("Tasks").Range("Job1").Font.Color
Worksheets("Sales").Range("Week1").Interior.Color = Worksheets("Tasks").Range("Job1").Interior.Color

Worksheets("Sales").Range("Week2")(1).Cells.Value = Worksheets("Tasks").Range("Job2")(1).Cells.Value
Worksheets("Sales").Range("Week2")(2).Cells.Value = Worksheets("Tasks").Range("Job2")(2).Cells.Value
Worksheets("Sales").Range("Week2")(3).Cells.Value = Worksheets("Tasks").Range("Job2")(3).Cells.Value
Worksheets("Sales").Range("Week2")(4).Cells.Value = Worksheets("Tasks").Range("Job2")(5).Cells.Value
Worksheets("Sales").Range("Week2").Font.Color = Worksheets("Tasks").Range("Job2").Font.Color
Worksheets("Sales").Range("Week2").Interior.Color = Worksheets("Tasks").Range("Job2").Interior.Color

End Sub

将公共代码拆分为单独的子...

Private Sub Copy_Jobs()
    'either like this...
    CopyAndFormat Worksheets("Sales").Range("Week1"), _
                  Worksheets("Tasks").Range("Job1")

    CopyAndFormat Worksheets("Sales").Range("Week2"), _
                  Worksheets("Tasks").Range("Job2")

    '...or in a loop
    Dim i As Long
    For i = 1 to 5
        CopyAndFormat Worksheets("Sales").Range("Week" & i), _
                      Worksheets("Tasks").Range("Job" & i)
    Next i

End Sub

Sub CopyAndFormat(w as Range, j As Range)
    w(1).Cells.Value = j(1).Cells.Value
    w(2).Cells.Value = j(2).Cells.Value
    w(3).Cells.Value = j(3).Cells.Value
    w(4).Cells.Value = j(5).Cells.Value
    w.Font.Color = j.Font.Color
    w.Interior.Color = j.Interior.Color
End Sub 

请注意,只有一致地格式化范围,才能真正复制字体和内部颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM