![](/img/trans.png)
[英]Excel VBA Copy and pasting cells with certain values in a range from one worksheet to another
[英]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.