작성
·
229
0
선생님 안녕하세요, 강의를 듣고 실무에 적용해봤는데 에러가 뜨는 이유가 궁금합니다.
행이 수백개 있는 '원본파일'에서 각 행별로 '중간가공파일'을 거쳐 '취합파일'에 붙여넣기 하려고합니다.
매크로 기록은 '중간가공파일'에서 시작했습니다.
[프로시저]
Dim i As Integer
For i = 1To n 'n을 마지막 행번호로 표현하고 싶으면 어떻게 해야되나요?
Range("B9").FormulaR1C1 = "='[원본파일]시트1'!R[i]C[1]" '여기서 에러가 뜹니다..
Range("B10").FormulaR1C1 = "='[원본파일]시트1'!R[i]C[3]"
Windows("중간가공파일").Activate
Range("H9", Range("H9").End(xlToRight).End(xlDown)).Copy ' 원본파일에서 끌어온 데이터를 중간가공파일에서 수식 작업을 하고 범위지정하여 취합파일에 붙여넣는 과정, cf) H9=B9, H10=B10
Windows("취합파일.xlsx").Activate
Range("A1").End(xlDown).Offset(1, 0).PasteSpecial , xlPasteSpecialOperationNone '값붙여넣기 인수는 무엇인가요?
Next i
너무 설명이 장황하여 잘 전달될지 모르겠지만,,,,도움 요청드립니다.
감사합니다.
답변 1
0
안녕하세요? 질문과 오류가 발생한 문장 위주로 설명드리겠습니다.
1. For i = 1To n 'n을 마지막 행번호로 표현하고 싶으면 어떻게 해야되나요?
n 대신에 Cells(Cells.Rows.Count, 1).End(xlUp).Row 를 사용해보세요
cells.rows.count는 마지막 행 번호를 뜻하여 A열의 마지막 셀에서 ctrl + ↑를 눌렀을 때 이동하는 셀 번호를 표시하는 문장입니다.
최종적으로
For i=1 to Cells(Cells.Rows.Count, 1).End(xlUp).Row 입니다.
2. Range("B9").FormulaR1C1 = "='[원본파일]시트1'!R[i]C[1]" '여기서 에러가 뜹니다..
Range("B9").Value = "=[원본파일.xlsx]시트1!A" & i 사용해보세요
i는 변수이기 때문에 따옴표 안에 사용할 수 없고, 변하지 않는 수식 부분만 따옴표 안에 넣고 변수는 &연산자로 연결해 사용합니다. 그리고 r1c1 방식 대신 Value 속성을 사용합니다.
3. Range("A1").End(xlDown).Offset(1, 0).PasteSpecial , xlPasteSpecialOperationNone '값붙여넣기 인수는 무엇인가요?
Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
값 붙여넣기는 PasteSpecial 메서드의 Paste인수 값으로 xlpastevalues 값을 사용합니다. 그리고 PasteSpecial 뒤에 콤마를 찍지 않고 한 칸 띄운 후 입력하면 됩니다.
추가로 발생되는 오류나 질문 사항 있으시면 Q&A 올려주세요~
선생님 덕분에 에러도 해결하고 업무시간도 대폭 단축했습니다. 감사합니다^^