2014-05-18 2 views
0

아마 꽤 직설적입니다. 도움이 필요할 것입니다. 다른 가솔린 등급에 대한 다양한 가솔린 등급 상대 값을 정량화하는 36x36 매트릭스가 있습니다. 각 행을 가져 와서 다른 워크 시트 (연속 된 순서로)로 이동하는 반복문을 작성하고 동일한 코드를 반복해서 붙여 넣지 않고 (범위와 시트 변경) 반복 할 필요없이 작성하고 싶습니다. 어떤 도움을 주시면 감사하겠습니다.행을 반복하면서 셀 값을 다른 워크 시트에 복사

Sheets("Formulas").Range("Z8:BI8").Copy 

With Sheets("CONV7.8RVP87OCT").Range("A10000").End(xlUp).Offset(1, 0) 
    .PasteSpecial xlPasteFormats, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    .PasteSpecial xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End With 

Sheets("Formulas").Range("Z9:BI9").Copy 

With Sheets("CONV7.8RVP89OCT").Range("A10000").End(xlUp).Offset(1, 0) 
    .PasteSpecial xlPasteFormats, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    .PasteSpecial xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End With 

Sheets("Formulas").Range("Z10:BI10").Copy 

With Sheets("CONV7.8RVP93OCT").Range("A10000").End(xlUp).Offset(1, 0) 
    .PasteSpecial xlPasteFormats, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    .PasteSpecial xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End With 

Sheets("Formulas").Range("Z11:BI11").Copy 

With Sheets("CONV9.0RVP87OCT").Range("A10000").End(xlUp).Offset(1, 0) 
    .PasteSpecial xlPasteFormats, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    .PasteSpecial xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End With 

답변

1

확실히. 워크 시트를 서브 루틴에 매개 변수로 보내기 만하면됩니다.

dim ws as WorkSheet 
Set ws = Sheets("CONV7.8RVP87OCT") 
Sheets("Formulas").Range("Z8:BI8").Copy 
pasteFormulas(ws) 
' next worksheet 
Set ws = Sheets("CONV7.8RVP89OCT") 
Sheets("Formulas").Range("Z9:BI9").Copy 
pasteFormulas(ws) 
' etc... 
' You might actually want to consider a for worksheets loop, but I'll leave that as an exercise for you to complete. 

변수로 워크 시트 개체를 사용하는 방법에 꽤 좋은 설명도 Avoid Using Select 참조 : 같은

Private sub pasteFormula(ws as WorkSheet) 
    With ws.Range("A10000").End(xlUp).Offset(1, 0) 
     .PasteSpecial xlPasteFormats, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 
     .PasteSpecial xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 
    End With 
End sub 

호출됩니다.

1

어때?

대상 시트 이름을 정의해야합니다. "CONV9.0RVP87OCT", 배열 내의 "CONV7.8RVP87OCT" :

Sub CopyRows() 
    Dim sheets() As Variant, sourceData As Range, rw As Long 

    Set sourceData = Worksheets("Formulas").Range("Z8:BI43") // your 36 x 36 matrix 
    sheets = Array("Sheet2", "Sheet3") //add your sheet names in here... 

    For rw = 1 To sourceData.Rows.Count 
     sourceData.Rows(rw).Copy Destination:=Worksheets(sheets(rw - 1)).Range("A10000").End(xlUp).Offset(1, 0) 
    Next rw 
End Sub 
관련 문제