• 카테고리

    질문 & 답변
  • 세부 분야

    오피스

  • 해결 여부

    미해결

파일취합 변수

24.02.20 00:03 작성 조회수 98

0

안녕하세요. 8-7번 파일취합 강의 질문입니다.

Dim 파일선택 as variant 에서 이 variant란 변수는 어떤 변수 대신 사용한 건가요?

강의에서 variant 변수는 모든 변수라고 나와 있는데 정확히 어떤 변수 대신 사용한 건지 궁금합니다.

파일선택은 숫자, 문자, 개체 중 어떤 성격의 변수인지도 궁금합니다.

답변 1

답변을 작성해보세요.

1

Mr. jeon님. 안녕하세요?

variant 변수 형식은 가변형으로 처음 변수에 값이 대입될때 자료 형식이 결정됩니다.

숫자가 대입되면 숫자 형식으로 설정되고

문자가 대입되면 문자 형식, 개체가 대입되면 개체자료 형식으로 설정됩니다.

숫자일 경우는 여러 자료형식 중에 Double로 설정됩니다.

 

이 프로그램에서 variant로 선언한 이유는

열기 대화상자에서 취합할 파일을 선택하면 파일의 정보가 배열형으로 저장이 되어 변수의 자료 형식이 배열이 되고,

만약 열기 대화장에서 취소를 누르면 변수에 False가 저장되어 변수 자료 형식이 논리형이 됩니다.

이렇듯 상황에 따라 저장되는 데이터 유형이 달라질 수 있어 변수 선언할 때 variant으로 선언했습니다.

질문에 대한 답변이 되었을지요?

추가로 궁금한 사항 있으시면 또 질문 올려주십시오.

감사합니다~^^

 

감사합니다. variant 변수에 대해서 완벽하게 이해가 됐습니다.

선생님 msgbox에서 아래 exit sub는 굳이 붙여야 하는 이유가 있을까요?

없어도 문제없이 실행은 되더라구요.

variant 변수에 대해 이해가 잘 되었다니 감사합니다~^^

추가 질문은

MsgBox "파일 취합이 완료되었습니다"

Exit Sub

이 문장에 있는 Exit Sub 문장에 대한 질문 맞을까요?

 

 

이 Exit Sub가 없으면 파일 취합이 정상적으로 진행된 다음에도

오류가 발생했을 때 보여주는 그 다음 MsgBox "파일을 선택하지 않았습니다" 문장이 실행됩니다.

정상적으로 취합이 완료된 다음에는 이 문장을 실행하지 않기 위해 Exit Sub 를 사용합니다.

 

물론 이 문장이 없어도 프로그램에는 오류가 발생하지는 않습니다.

전체적으로 매끄럽게 프로그램이 진행될 수 있도록 하기 위해 필요한 문장이라고 생각해주시면 될것 같습니다.

선생님 수업 내용에 대한 질문이 아니고 강의 수강에 대한 질문인데 어디에다 질문을 해야할지 몰라서 여기에다 합니다.

우선 매크로 vba 강의 너무 잘 들었습니다.

제가 선생님 강좌 중에서 추가로 더 수강해보고 싶은 강좌가 업무가 100배 빨라지는~, 프로들만의 차별화 된~ 입니다. 이 두 강좌 중 어느 걸 먼저 들어보는 게 좋을까요? 어느 강좌가 더 난이도가 있는 강좌인지 궁금합니다.


난이도 낮은 강좌를 먼저 수강하시려면 [업무가 100배 빨리지는 엑셀~]을 추천드립니다.

업무가 100배 빨라지는 엑셀~ 강좌는 데이터 편집과 가공에 관련된 팁들이 많이 있고,

프로들만의 차별화된 비법~ 강좌는 피벗과 차트 내용이 많은 편입니다.

함수의 난이도는 프로들만의 차별화된 비법~ 강좌가 더 높습니다.

그런데 지금 학습하신 엑셀 매크로와 VBA 강좌보다 난이도가 다 낮은데, 미리보기 영상을 보신 후 선택하시는것도 좋을것 같습니다.

회사에서 사용하시는 엑셀 버전이 365나 2021이라면 [생존엑셀 강좌]도 추천드립니다. 이 강좌는 난이도가 다소 높은 편입니다. 함수는 최신 버전에서 지원하는 함수들도 많이 포함되어 있고, 파워 쿼리 기능들도 많이 사용한 내용들로 구성되어 있습니다.

 

아 두 강좌가 모두 vba 강좌보다 난이도가 낮군요.. 8-7번 강좌 빼고는 딱히 강의 들으면서 어려운 부분은 없었던 거 같습니다.

저 2021버전 사용하고 있습니다. 생존엑셀 강좌를 바로 수강해 보는 걸 고려해봐야 겠네요. 감사합니다.

 

 

선생님

복습 중 1-5번 행 삭제 매크로 상대참조 부분에서 1-3 택스트 나누기 매크로 시트선택하는 부분 응용해서 코드를

 

Sub 상대참조()

Dim 시트 As Worksheet

Application.ScreenUpdating = False

For Each s In Worksheets

시트.Select

Range("d3").Select

Do While ActiveCell <> ""

Selection.Cut Destination:=ActiveCell.Offset(-1, 1)

Activecell.EntireRow.Select

Selection.Delete

ActiveCell.Offset(1, 3).Select

Loop

Next

Application.ScreenUpdating = True

MsgBox "완료"

 

이렇게 작성해 봤습니다. 문제 없는지 한번 봐주시면 감사하겠습니다.

 

아참 그리고 고민 끝에 업무가 100배 빨라지는 강의 등록했습니다.

vba 복습 끝나고 열심히 수강해 보겠습니다😊

End Sub

 

셀 이동과 삭제 반복문에

시트 반복까지 추가하셨군요.

코드 잘 짜신것 같습니다.

오류도 없어보이구요. 응용력 좋으신대요~^^

업무가 100배 빨라지는 엑셀 활용 등록하셨군요. 감사합니다~^^

열공 응원하겠습니다~^^

 

엑셀 여신 블로그에 오셔서 댓글 하나만 남겨주세요~^^