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로 엑셀매크로 만들어놓으면 여러모로 업무에 편하긴 합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
134111 [질문] 한글 프로그램 질문 [2] Right2268 19/06/04 2268
134110 [삭제예정] 인턴 퇴사 및 월급 수령에 관해 질문 드립니다 [6] 쌍무지개4341 19/06/04 4341
134109 [질문] 나이를 먹을수록 고집이 쌔지는건 자연스러운 현상인가요? [22] 나이스데이5528 19/06/04 5528
134108 [질문] 노래 찾읍니다.. [13] kkong2310 19/06/04 2310
134107 [질문] 마블 코믹스 전자책 대여 사이트 문의드립니다! [6] 수루룩4086 19/06/04 4086
134106 [질문] GOG판 M&M7 한글패치 알고 계신분 도움좀... Ellesar_Aragorn1837 19/06/04 1837
134104 [질문] vba 학습 조언을 구합니다. [6] 산양2221 19/06/04 2221
134103 [질문] MOS관련 질문입니다. [2] EPerShare1511 19/06/04 1511
134102 [질문] 정발산역 근처 맛집 질문드립니다 [8] goldfish2570 19/06/04 2570
134101 [질문] pgr21 로그인이 되지를 않습니다 [5] 시지프스2240 19/06/04 2240
134100 [질문] 왜 모모랜드는 뿜뿜 인기를 못 끌어갔을까요? [34] 스위치 메이커5183 19/06/04 5183
134099 [질문] 엑셀 숨기기 유지하면서 행높이 조절방법? [5] 예나3881 19/06/04 3881
134098 [질문] 웹툰 덴마, 신의 탑, 나이트런 언제 쯤 완결될까요? [14] 휴울4436 19/06/04 4436
134097 [질문] PC방용 책상/의자/pc/마우스등을 일반가정에서 일괄구매 가능한가요? [1] 디재2110 19/06/04 2110
134096 [질문] 토스 미션계좌 없어졌나요? [2] 승뢰4473 19/06/04 4473
134095 [질문] 경기도에 야외에서 고기구워먹는 식당이 있나여? [7] 이남수3814 19/06/04 3814
134094 [질문] 핸드폰 연동형 네비(?)추천부탁해요 [2] 도뿔이3355 19/06/04 3355
134093 [질문] 한라산 성판악 코스 질문 드립니다. [6] 버티면나아지려나1758 19/06/04 1758
134092 [질문] [스포] 기생충 내용질문입니다. [4] 공부맨5646 19/06/04 5646
134091 [질문] 유심없는 아이폰과 셀룰러 애플워치 연결에 문제 없을까요? [2] 2683 19/06/04 2683
134090 [질문] 경기도 양주에서 인천끼고 평택가는게 빠른가요? [3] 진인환1940 19/06/04 1940
134089 [질문] 항공대 경영학부 어떤가요? [8] 네오크로우6301 19/06/03 6301
134088 [질문] 용인 죽전이나 수지쪽에 맛집 추천부탁드려요 [9] 3941 19/06/03 3941
목록 이전 다음
댓글

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