업무 스킬/Excel VBA(43)
-
[엑셀 VBA] FIND 함수 , FINDNEXT , DO ~LOOP Until 복합 사용 법.
VBA에서 자주 쓰는 FIND 및 FINDNEXT 함수 그리고 DO ~ LOOP Until 함수를 사용하여, 병합된 CELL을 병합 해제 하고 빈 셀에 값을 채워 넣는 코드를 만들어 보자. 위와 같이 B열의 고객 칸에 병합되어 있는 CELL들이 있을 경우 이 CELL들의 병합을 해제하고 A사 CELL에는 모두 A사를 채워 놓고 B사 영역에는 모두 B사를 채워 놓고 싶다. 자 코드의 순서는 아래와 같이 짜야 한다. 1) 병합 해제 -> Unmerge 2) 빈칸을 찾는다 - > FIND(What:="") 3) 다음 빈칸을 찾는다 - >FINDNEXT(After:=) 병합된 CELL의 병합을 해제하면 많은 빈셀들이 생겨나기 때문에 각 빈칸을 찾아줘야 한다. 4) 언제 까지 빈칸을 찾는가? 빈칸이 없을 때 까지..
2019.12.17 -
[엑셀 VBA] Function (Optional 키워드) 생략 가능한 인수를 사용하는 사용자 정의 함수
Function 프로시저를 이용해 사용자 정의 함수를 만들 때, Function 프로시저 안에 [Optional]이라는 키워드를 사용하면 생략 가능한 인수를 사용 가능하다. 위 코드를 보면 [총액]이라는 사용자 정의 함수에서 두 번째 [부가세]를 따로 입력하지 않았을 때, 기본 인수로 [별도] 가 들어가게 짜 놓은 코드이다. 예시를 보자 총액 사용자 정의 함수를 사용하여 부가세 방식을 활용하여 자동으로 총액이 나오게 만든 코드이다. [장비3]을 보면 부가세 방식이 빈칸이어서 [총액] 사용자 정의 함수를 다 사용하면 [장비3]에는 기본 인자가 들어가게 된다. 나는 코드에서 기본인자가 "별도"가 되도록 했기 때문에 [장비3]의 총액은 22000원이 되어야 할 것이다. 실행해 보면? 위와 같이 [장비3]의 총..
2019.12.15 -
[엑셀 VBA] FOR~NEXT문(순환문) 사용법
For ~ NEXT 순환문은 엑셀 VBA 사용에 있어 가장 빈번하고 가장 쉽게 사용되는 순환문 구조이다. 대부분 순차적으로 CELL이나 RANGE 값을 실행할 때 사용하며 기본 형식은 위 코드 과 같다. 1. 카운터로 사용할 문자를 선언해준다. 대부분 i 또는 j를 사용하며 DATA 형식은 Integer 또는 Long을 사용한다. 2. "FOR i = 시작숫자 TO 끝숫자"를 지정해준다. 3. 각 i값에 실행 될 명령 코드를 작성한다. 4. NEXT 즉 다음 i 값으로 넘어간다. FOR 순환문을 사용한 예시를 하나 들어보자, 예시는 판매하고자 하는 어떤 항목의 수량이 "0"개 일때, 그 옆 Column에 "품절"을 표시하는 매크로이다. 위 코드를 실행 해주면 수량이 0인 항목의 "품절여부" Column에..
2019.12.03 -
[엑셀 VBA] PasteSpecial. 선택하여 붙여넣기
엑셀에서 자주 쓰는 기능 중 하나는, [선택하여 붙여 넣기]이다. [선택하여 붙여 넣기 [는 원하는 DATA를 행, 열 전환하여 붙여 넣거나, 수식을 제외하고 값만 붙여 넣을 때. 또는 원하는 DATA를 한 번에 나누거나, 곱할 때 유용하게 쓰이는 엑셀 기능이다. 그렇다면 VBA 코드에서 이 [선택하여 붙여 넣기]는 어떻게 작성해야 할까. VBA에는 PasteSpecil이라는 메서드로 사용되며 구문은 아래와 같다. 위와 같이 붙여넣기 원하는 Range와. PasteSpecial만 입력하면 도움말이 나오면서 내가 쓸 수 있는 항목을 list화 해준다. 항목을 간단하게 설명하기 위해, 엑셀에서 [선택하여 붙여 넣기] 기능을 살펴보자 빨간 화살표가 있는 곳이 바로 PasteSpecial 구문의 항목으로 순서대..
2019.11.28 -
[엑셀 VBA] InputBox 사용법. (InputBox 매서드)
Inputbox는 총 두가지로 사용할 수 있다. ① Inputbox 함수 ② Applcation.Inputbox ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- 코드창에서 두가지를 쳐보면 다음과 같이 구문 예시가 나온다. 차이는 입력된 값을 반환하는 방법이다. (1)Inputbox 함수의 경우 구문을 보면 "As String" 으로 되어있는 것을 볼 수 있다. 즉 입력값을 String형식으로 반환한다는 말이..
2019.11.27 -
[엑셀 VBA] On Error문을 이용한 코드 최적화 법
On Error문을 순환문 대신 사용하여 작업을 능률적으로 할 수 있다. 방식은 간단하다. 예를 들어보면 우선 For Each In 문을 사용한 순환문을 통해, 현재 파일이 열려 있는지 확인하는 코드를 작성해보자. 위와 같이 작성할 수 있는데, 이렇게 순환문을 사용하면 원하는 파일명을 확인하기 까지현재 열려 있는 모든 문서를 일일이 확인해야 하는 번거로움이 생긴다. (나 말고 메모리에) 그렇다면 순환문을 작성하지 않고, On Error문을 통해 어떻게 열려 있는 파일을 확인할 수 있는 코드를 짤 수 있을까? 코드를 설명해보면 먼저 [On Error Resume Next]구문, 이전 포스팅에서 설명한 구문으로 Error가 발생해도 무시하고 다음 구문으로 넘어가라고 지시하는 구문이다. 그 후 순환문을 쓰지 ..
2019.11.21