답변:
아래 코드는 복사 할 데이터가 포함 된 시트의 이름이 "Main"이라고 가정합니다. 또한 "붙여 넣기"시트에 열 머리글이 포함되어 있다고 가정하므로 행 2에서 붙여 넣기가 시작됩니다. 원하는 것이 아닌 경우 .Offset(1, 0)붙여 넣기를 수행하는 회선 에서 통화를 제거하십시오 .
아마도 한 Debug.Print줄 보다 더 나은 오류 처리를 원할 것입니다 . 그러나 나는 그것을 당신에게 맡길 것입니다.
Excel 2007에서 테스트되었으며 예상대로 작동합니다.
Sub DoCopy()
Const copySheetName As String = "Main"
Dim rw As Integer
Dim lngRowStart As Long
Dim lngRowEnd As Long
Dim copySheet As Excel.Worksheet: Set copySheet = ThisWorkbook.Worksheets(copySheetName)
Dim pasteSheet As Excel.Worksheet
lngRowStart = 1 'number of first row containing data to copy
lngRowEnd = 17 'number of last row containing data to copy
'the "Copy" sheet be the active sheet in order to copy/paste (avoid run-time error 1004)
ThisWorkbook.Worksheets(copySheetName).Activate
For rw = lngRowStart To lngRowEnd
copySheet.Range(Cells(rw, 1), Cells(rw, 3)).Copy
Select Case Cells(rw, 2)
Case "a"
Set pasteSheet = ThisWorkbook.Worksheets("Sheet1")
Case "b"
Set pasteSheet = ThisWorkbook.Worksheets("Sheet2")
Case "c"
Set pasteSheet = ThisWorkbook.Worksheets("Sheet3")
Case Else
Debug.Print "Invalid Value: " & Cells(rw, 2) & " (row " & rw & ")"
GoTo SkipRow
End Select
pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
SkipRow:
Next rw
Application.CutCopyMode = False
Set copySheet = Nothing
Set pasteSheet = Nothing
End Sub