인프런 커뮤니티 질문&답변

music2183님의 프로필 이미지
music2183

작성한 질문수

엑셀 매크로와 VBA 기초부터 실무활용까지 완전 정복

8-7. 파일로 분리된 데이터 한 시트에 취합하는 프로그램 소스 사용하기

행번호 질문

작성

·

139

0

안녕하세요, 기초부터 꼼꼼히 알려주셔서 별 문제 없이 따라오고 있는 수강생입니다.
 
올려주신 코드에는
행번호 = 취합시트.Range("A1").End(xlDown).Row + 1
로 되어 있습니다.
행번호 = 취합시트.Range("A1").End(xlDown).Offset(1,0)
으로 처리할 경우는 행번호 변수가 0으로 계산되어 에러처리부분으로 이동하는데 차이가 무엇인지 알 수 있을까요?

답변 1

1

엑셀여신님의 프로필 이미지
엑셀여신
지식공유자

코드를 다양하게 응용해보고 계시는군요.  아주 좋은 학습방법입니다.

우선 2개 문장의 차이점을 말씀드리면

1번째 문장의 결과는 2, 3, 4, 5, 6,... 등의 숫자값이 저장되고

2번째 문장의 결과는 Range("A2"), Range("A3"), Range("A4"),... 등의 개체가 저장됩니다.

 

2번째 문장에서 오류가 발생하는 이유는 

행번호 변수를 숫자 형식으로 선언했기때문에 개체 데이터가 저장될 수가 없어서 오류가 발생합니다.

그로인해 행번호 변수에는 아무것도 저장되지 않아 초기값인 '0' 인 상태가 되구요.

 

만약 2번째 문장을 사용하시려면 2가지 방법 중에서 선택할 수 있습니다.

①변수의 자료 형식을 Range 형식으로 선언한 후 사용합니다. (Dim 행번호 As Range)
   이렇게 수정하실때는 데이터를 복사하는 문장도 수정 되어야합니다.

②행번호 = 취합시트.Range("A1").End(xlDown).Offset(1,0).Row 로 맨 마지막에 Row라는 속성을 추가합니다. Row는 해당 셀의 행 번호를 반환하는 속성입니다.

 

프로그램은 정답이 있는것이 아니므로 지금처럼 여러 가지 방식으로 변형하여 작성해보십시오.
학습에 많이 도움이 되실겁니다~

 

추가로 궁금한 사항 있으시면 질문 올려주세요~^^

music2183님의 프로필 이미지
music2183
질문자

감사합니다.

새해 복 많이 받으세요.

music2183님의 프로필 이미지
music2183

작성한 질문수

질문하기