PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2019/06/04 14:50:35
Name 산양
Subject [질문] vba 학습 조언을 구합니다.
사회과학계열 졸업한 비전공자입니다.

업무자동화에 관심이 많아 vba와 파이썬을 고민하다, 일단 당장 엑셀과 파워포인트에 집중하고자 vba를 먼저 배우려고 합니다.


현재 엑셀 실력은 다음과 같습니다.

- 엑셀에서 기본적으로 제공하는 함수와 기능을 모두 다룰 수 있음
- 매크로 녹화 기능을 이용해 만든 코드를 vbe에서 역공학하여 조건이나 참조 셀을 간단히 수정 할 수 있음.
- for문, do until/while문, select case문 기본적인 구조 알고"는" 있음.


vba를 다루면서 어려웠던 점은 다음과 같습니다.

- 변수의 선언(이건 이해했습니다.)
- 각 객체의 호출명과 호출방식, 메서드, 프로퍼티명


위와 같은 어려움 때문에 변수 선언 후 코딩다운 코딩을 해보려 해도 항상 객체 호출과정에서 오류가 발생하는 상황이라, 지금은 기존 매크로 녹화 후 편집기능을 이용해 vba를 적용하고 있습니다.


물론 이정도만 되어도 구글신의 가호를 받은 복붙으로도 어느정도 퍼포먼스가 나오겠지만 하기하는 두가지 이유로 vba를 좀 더 심도있게 배우고 싶습니다.

- 결과값 셀에 vba를 이용한 결과값이 아닌 함수를 이용한 값을 출력할 시 1) 해당 함수값을 그대로 재사용할 수 없어서 값으로 복사 과정이 추가로 요구됨, 2) 사용하지 않아도 될 셀까지 계산 및 참조가 들어가 작업속도가 저하됨
- 엑셀 뿐 아닌 파워포인트 오브젝트 정렬 및 크기 재설정 같은 단순 반복 작업에 사용할 모듈(이걸 라이브러리라고 하나요?) 생성


현재 아이엑셀러를 메인으로 학습중인데 이중for문을 이용한 이중유효성 검사 부터 갑자기 어려워져서 멘붕이 와 질문드립니다.

조언 주시면 감사하겠습니다. 질문 읽어주신 분들 모두 좋은하루 되시길 바랍니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
어리버리질럿
19/06/04 18:58
수정 아이콘
저도 vba에 관심이 있어 공부중인데요. 전 책을 한 권 구입하여 예제 코드를 봐가며 학습했습니다.
결국 예제에 나와있는 다양한 코드를 내 상황에 어떻게 적용하느냐의 문제라 생각해요.
전 지방에 살고 있는데 책 저자의 vba강의를 들으러 1박2일로 서울 간적이 있었는데요. 그 때 저자분께서 이런저런 팁과 좋은 말씀 많이해주셨는데 크게 두 가지가 기억에 남네요.

1. 여기에 오신 여러분 중 vba를 손에 넣을 수 있는 사람은 10%미만일 것이다. 그만큼 많은 노력을 필요로 하지만 그 열매는 달콤하다.

2. vba는 머리보다 손가락이 기억한다. 많이 작성해보고 사용해보아야 한다.

아무쪼록 화이팅입니다!!
19/06/05 08:41
수정 아이콘
답변 감사합니다. 시간이 해결해주겠지란 마음으로 계속 해봐야겠습니다.
19/06/04 22:52
수정 아이콘
직접 코팅하면 객체호출 오류나고 매크로 기록해서 실행하면 잘 된다는 단서에 초점을 맞춰서 답변드립니다.

프로시저에서 특정 셀에 접근할 때 그 상황에서 어떤 시트(sheet)가 Activated 되어 있는지가 중요합니다. 프로시저가 Activated 되어 있지 않은 시트의 셀의 값을 참조하거나 기록하는 경우에는 반드시 어떤시트인지를 코드에서 명시해주어야 합니다. 시트가 명시되지 않은 상태에서 그냥 Range나 Cells 를 사용하시면 VBA는 그 앞에 ActiveSheet. 가 생략된 것으로 간주하고 현재 활성화된 시트의 해당 셀에 접근하게 됩니다.
19/06/05 09:00
수정 아이콘
그 부분은 이해가 된 상태입니다. 그런데 제가 여전히 혼돈스러운 지점은, 간단히 예를 들어 A열부터 H열까지의 값이 입력된 상태에서, 데이터가 있는 행까지만 J열에 합을 내는 서브루틴을 구현하고자 한다면,


Sub sum()

Dim i As Integer
Dim lastrow As Integer
Dim stack As Range

'이렇게 변수를 정의한 뒤,

lastrow = Sheets("Sheet3").Cells(1, 1).End(xlDown).Row

Do
stack = Sheets("Sheet3").Cells(10, i).Select
stack = Application.WorksheetFunction.sum("A1:H1")
i = i + 1
Loop Until i = lastrow

End Sub


저는 이런 식으로 구현을 할 거 같은데, 문제는 중간중간에 들어가는 인수가 이게 range를 사용할 때 쓰는 프로퍼티인지.. cells를 사용할 때 쓰는 프로퍼틴지.. 아직도 낯설기만 합니다. 실제로 구현해보니 오버플로 뜨네요 크크크크...


아직 제가 뭘 모르는 지 정확히 모르는 상태라 제 상황을 맞게 묘사하고 있는지도 모르겠지만 어쨌든 이런 상황입니다..
어리버리질럿
19/06/05 14:39
수정 아이콘
(수정됨) 변수 선언시 stack을 range로 선언하셨는데 range는 개체변수라 set을 써야해요. integer와는 상황이 다르달까요?

stack = Sheets("Sheet3").Cells(10, i).Select

요 부분을

Set stack = Sheets("Sheet3").Cells(10, 1)

이런 식으로 바꿔야 합니다.

그리고 stack = Application.WorksheetFunction.sum("A1:H1") 요 부분도
앞부분은 stack은 range이니 다른 변수로 바꿔야 할거 같구요. sum이후의 합계 범위도 sum(Range("A1:A10")) 이런 식으로 바꿔야 합니다.
예를 들면

Sub sum()

Dim i As Integer
Dim lastrow As Integer
Dim stack As Range
Dim 결과 As Integer

'이렇게 변수를 정의한 뒤,

lastrow = Sheets("Sheet3").Cells(1, 1).End(xlDown).Row



Do
Set stack = Sheets("Sheet3").Cells(10, 1)
결과 = Application.WorksheetFunction.sum(Range("A1:A" & i + 1))
i = i + 1
Loop Until i = lastrow

MsgBox 결과

End Sub

이런 식으로 하면 A열의 합계가 메세지박스에 나타날거에요.
아델라이데
20/02/14 14:06
수정 아이콘
저같은 경우에는 결국은 책보다는 인터넷이 더 도움이 되더군요. vba로 엑셀매크로 만들어놓으면 여러모로 업무에 편하긴 합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137688 [질문] 가족 통신사 요금 결합 선택 및 오리고기 질문 [5] 치열하게3340 19/09/18 3340
137687 [질문] 크로스마일 카드 마일리지 전환 관련 궁금한게 있습니다. [3] Tristana3437 19/09/18 3437
137686 [질문] 렌트차로 상대 차를 살짝 긁은(?)거 같은데 [1] 비타에듀3864 19/09/18 3864
137684 [질문] 닌텐도 스위치 디이블로3를 친구와 집에서 함께 하려고 합니다. [4] 커피마시쪙3864 19/09/18 3864
137683 [질문] 통합코덱 추천 부탁드립니다. [3] 오'쇼바2668 19/09/18 2668
137682 [질문] 나사체결된 이거 어떻게 풀어야될까요? [5] euimseed3250 19/09/18 3250
137681 [질문] 블루투스 기계 배터리도 연결에 영향을 주나요? [3] 손금불산입2784 19/09/18 2784
137680 [질문] 공무원 운전면허 필수인가요? [13] 삭제됨7936 19/09/18 7936
137679 [질문] 욕실에 부착할만한 접착후크 추천좀 해주세요 [2] 마스쿼레이드2708 19/09/18 2708
137678 [질문] 원서접수 이전에 시험을 이유로 예비군 연기가 가능한 방법이 있을까요? [4] 삭제됨4236 19/09/18 4236
137677 [질문] 카페 셀프 인테리어 질문입니다. [12] 로제타5530 19/09/18 5530
137676 [질문] 와우클래식 아직도 대기열이 쩌나요? [9] 도시의미학6319 19/09/18 6319
137675 [질문] 선택 문의 ps4 pro 대 닌텐도스위치 [24] Wanya6441 19/09/18 6441
137674 [질문] 전세보증금 반환 관련 현재 제 상황에서 어떻게 대처해야 할까요? [25] 스컬로매니아4815 19/09/18 4815
137673 [질문] (컴알못) 사진의 특정 영역만 바탕화면으로 만들 수 있는 사진뷰어 추천 부탁드려요 [2] 코시엔3686 19/09/18 3686
137672 [질문] 대구 숙박 [10] 로드바이크4114 19/09/18 4114
137671 [질문] 제네시스 G80하고 G90 대한 구매 질문입니다. [34] 사신군10164 19/09/18 10164
137670 [질문] (WOW) 아제로스에 종주 종족은 뭐가 있나요? [8] Hermes3278 19/09/18 3278
137669 [질문] 스팀 관련 문제입니다. [6] 허성민3664 19/09/18 3664
137668 [질문] 사업자 계좌관련 질문입니다. [2] 곰비2681 19/09/18 2681
137667 [질문] 예비군 가는데 사업주가 연차쓰라는데요 [27] mcroberts5959 19/09/18 5959
137666 [질문] 종각이 회사라면 어디에서 원룸구하는게 좋을까요? [12] 도도이탄5021 19/09/18 5021
137665 [질문] 시력교정수술(라식, 라섹 등) 관련 안과 추천부탁드려요. [2] monkeyD3194 19/09/18 3194
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로