Hi - I've changed the code below just to show you some options about this sort of thing; I do recommend though that you have a think about how your ranges are defined (static or dynamic) and you might be able to create a loop that does the same thing. I've made this as generic as I can to demonstrate and you can choose the most appropriate option for what you're doing ...
Sub YourControlRoutine()
Dim wshSource As Worksheet, wshTarget1 As Worksheet, wshTarget2 As Worksheet
Dim strSourceRange1 As String, strSourceRange2 As String
'your code to where you initiate the copy/paste, then ...
'if these are static then just set them:
strSourceRange1 = "A1:A5"
strSourceRange2 = "C1:C5"
'(... but if they aren't static, and (say) you select the ranges
'before copying, then you could use just one variable (setting
'it as the range is selected or the address is otherwise determined,
'such as:
'strSourceRange = Selection.Address).
Set wshTarget1 = ActiveWorkbook.Worksheets(2)
Set wshTarget2 = ActiveWorkbook.Worksheets(3)
Set wshSource = ActiveWorkbook.Worksheets(1)
Call MoveToMultipleSheets(wshSource, wshTarget1, wshTarget2, strSourceRange1)
Call MoveToMultipleSheets(wshSource, wshTarget1, wshTarget2, strSourceRange2)
'depending on what you're doing, you could call the other sub 4 times and
'just pass in a source & one target each time, which would look like:
'Call MoveToMultipleSheets(wshSource, wshTarget1, strSourceRange1)
'Call MoveToMultipleSheets(wshSource, wshTarget2, strSourceRange1)
'Call MoveToMultipleSheets(wshSource, wshTarget1, strSourceRange2)
'Call MoveToMultipleSheets(wshSource, wshTarget2, strSourceRange2)
' etc etc etc ...
End Sub
Sub MoveToMultipleSheets(shtS As Worksheet, shtT1 As Worksheet, shtT2 As Worksheet, strAddress As String)
shtS.Range(strAddress).Copy
With shtS
.Paste Destination:=shtT1.Range(strAddress)
.Paste Destination:=shtT2.Range(strAddress)
End With
Application.CutCopyMode = False
End Sub
Hope that helps ... MM.
Bookmarks