반응형

VBA 27

구구단 만들기(6) (엑셀 VBA 디버깅 2)

나. 조사식 추가 ① 지역 창에서도 변수의 변화 상태를 알 수 있지만, 아래와 같이 원하는 변수에 커서를 넣고 마우스 오른쪽 버튼을 누르거나, 디버그 - 조사식 추가 메뉴를 누르면 ② 아래와 같이 단순히 변수의 변동 상태뿐만 아니라, '값이 True일 때 중단' 또는 '값이 변경될 때 중단'이란 옵션이 있습니다. 변수에 커서를 넣지 않고 조사식 추가를 누른 경우는 직접 변수를 입력해도 됩니다. ③ '값이 True일 때 중단'이란 옵션을 선택하려면 먼저 윗부분의 '식'이란 부분에 i=3 식으로 조건 식을 먼저 입력해야 하며, 입력 후 확인 버튼을 클릭합니다. ④ 그러면 화면 오른쪽 아랫부분에 조사식 창이 추가되면서 i=3 이란 수식이 추가됩니다. 지역 창에 보이는 i와 다릅니다. ⑤ 이제 실행 버튼을 눌러..

EXCEL - VBA 2022.12.15

구구단 만들기(5) (엑셀 VBA 디버깅 1)

완성된 버전만 보니 프로그램이 에러가 발생하지 않은 듯 하지만 처음에는 2단 자리에 계속 9단까지 써지고, 9단까지뿐만 아니라 200단까지 확장하면서 변수가 어떻게 변하는지 체크도 해보면서 작업을 했습니다. 프로그램 과정에서 일어났거나 일어날만한 내용에 대해 정리해 보겠습니다. 1. '변수 미 정의' 오류 개발도구 - Visual Basic - 도구 - 옵션에서 '변수 선언 요구'에 체크를 하면 Module 맨 윗부분에 'Option Explicit'란 구문이 추가되므로, 변수를 선언하지 않으면 에러가 납니다. 물론 여기에 체크를 하지 않으면 변수를 선언하지 않더라도 에러 메시지가 나지 않기 때문에 불편함이 없을지는 모르지만, 프로그램의 정확성을 보장하기는 어렵습니다. ​ 예를 들어 Dim i As In..

EXCEL - VBA 2022.12.14

구구단 만들기(4) (엑셀 VBA 구구단 프로그램 확장)

[프로그램 구현] Option Explicit Sub 구구단() Dim i As Integer, j As Integer 'i는 구구단 앞 숫자, j는 구구단 뒷 숫자 Dim iRow As Integer, iCol As Integer, iLastCol '셀 주소 행, 열, 마지막 열 Dim iLastDan As Variant, iDisplayDan As Variant '구구단 최종 단수, 한 줄에 표시할 단수. 취소 버튼이 있기 때문에 Variant로 줘야 합니다. Application.ScreenUpdating = False '처리하는 동안 화면 갱신하지 않음 ' 문장 2개를 나란히 쓸 때는 콜론으로 연결 iRow = 3: iCol = 1 Do iLastDan = Application.InputBox("..

EXCEL - VBA 2022.12.13

구구단 만들기(3) (엑셀 VBA 프로그래밍 기초)

프로그램을 짜는 것은 논리(로직)만 만들어지면, 그다음은 그것을 해당 언어의 문법에 맞게 구성해 나가면 됩니다. ​ 구구단 어릴 적 많이 외웠던 것인데, 프로그램으로 만들어보면 기초 쌓는데 도움이 될 듯하여 골랐습니다. 만들 모양은 아래와 같습니다. 매크로 기록하기에서는 2단, 3단 등 단수 제목을 복잡해서 뺐는데, 프로그램을 짤 때는 그렇게 어렵지 않아 넣었습니다. [프로그램 로직] ​ ① A1에 '구 구 단'이라고 입력하고, A1에서 W1까지 범위를 '병합하고 가운데 정렬'한 후, 글자크기를 16, 굵게로 설정합니다. ​ ② A3에 '2 단'이라 입력하고, A3에서 E3까지 병합하고 가운데 정렬한 후, 글자를 굵게 합니다. ​ ③ 2단은 A4부터 E12까지 입력하는데, A열은 모두 2이고, B열은 *..

EXCEL - VBA 2022.12.12

구구단 만들기(2) (엑셀 VBA, 기록된 구구단 매크로 실행 및 분석)

1편에서 작성한 매크로를 실행해보고, 작성된 매크로를 분석해 보겠습니다. 1. 매크로로 기록한 매크로 실행 위 파일을 연 다음, 입력된 내용을 지우고, 매크로를 실행하면 1편에서 작업했던 모든 내용이 순식간에 실행되어 구구단이 화면에 표시됩니다. 처음 보시는 분은 신기할 것입니다. ​ ① A열과 1행 사이 코너를 클릭해서 전체 셀을 선택한 다음 ② 마우스 오른쪽 버튼을 누른 다음 삭제 메뉴를 클릭합니다. ③ 그러면, 아래와 같이 입력된 모든 내용이 지워지고, 열 너비도 초기화됩니다. 그러나, Delete키를 눌러 지우면 내용만 지워질 뿐 열 너비는 그대로 유지됩니다. ④ 개발도구 - 매크로 메뉴를 선택하고, ⑤ '매크로1'이란 매크로를 더블 클릭하거나, 클릭한 후 오른쪽 실행 버튼을 클릭합니다. 저는 p..

EXCEL - VBA 2022.12.09

VBA 조건문(1) - If

프로그램을 제어하는 구문은 조건문과 반복문이 있으며, 조건문은 If문과 Select Case문이 있고, 반복문은 For문과 While문이 있습니다. 먼저 If문에 대해 알아보겠습니다. 1. 구문 위 구문에서 [ ] (대괄호) 안에 있는 문장은 옵션이므로 생략 가능합니다. 따라서, 가장 간단한 조건문은 If 조건 Then End If 가 됩니다. 아래와 같이 코드를 작성하려면 먼저 개발도구 - Visual Basic 명령을 누른 후 위 쪽 표준도구 모음에서 삽입 아이콘을 누른 후 모듈을 추가해야 합니다. Microsoft 도움말 사이트 If 조건문의 구문 설명에 Then이 대괄호 사이에 있어서 생략 가능하다는데, 지우면 Then 또는 GoTo가 필요하다고 하면서 에러가 나므로 꼭 있어야 합니다. 그리고 실..

EXCEL - VBA 2022.11.04

범위 등을 입력받는 Application.InputBox 메소드(1)

아래 글에서 정해진 범위를 복사해서 정해진 영역에 붙여 넣는 매크로를 다뤄봤는데, https://lsw3210.tistory.com/m/163 아래와 같이 A1셀부터 A5셀까지 데이터가 있는데, B1셀에 붙여 넣으려면 위 글에 의한 방식으로 하면 Range("A1:A5").Copy Destination:=Range("B1")이라고 모듈 1에 작성하면 됩니다. 모듈을 작성하려면 개발도구 - Visual Basic 명령을 누른 다음 Visual Basic Editor에서 삽입 - 모듈 메뉴를 눌러 모듈을 추가한 다음 코드 창에 아래와 같이 입력하고 Sub 복붙1() Range("A1:A5").Copy Destination:=Range("B1") End Sub 복붙1이라는 sub 프로시저 안에 커서를 넣은 다..

EXCEL - VBA 2022.10.20

매크로 기록으로 엑셀 VBA의 내부를 보다

엑셀 VBA는 엑셀을 위한 Visual Basic이므로, 기본적으로는 Visual Basic으로 되어 있어 문법이 쉬운 편이지만, 엑셀에 특화되어 있기 때문에 엑셀의 특성을 잘 알아야 합니다. 엑셀은 셀을 기반으로 계산을 하고, 복사하고 붙여넣기, 차트 만들기 등 다양한 작업을 합니다. 복사하고 붙여 넣기를 매크로 기록으로 알아보고 매크로를 개선하는 방법을 알아보겠습니다. 1. 매크로 기록 A1셀의 값을 B1셀에 붙여 넣어 보겠습니다. 개발도구 - 매크로 기록을 누릅니다. 그러면 아래와 같이 매크로 이름 매크로1, 매크로 저장 위치가 현재 통합 문서로 지정되어 있는데, 바로 확인 버튼을 눌러도 되고, 바로 가기 키를 지정하거나 매크로 저장 위치를 개인용 매크로 통합 문서로 변경하거나 설명에 내용을 추가할..

EXCEL - VBA 2022.10.17

엑셀의 유용함, 사용자 지정 함수

1. 엑셀 내장 함수와 사용자 지정 함수 가. 엑셀 내장 함수 엑셀에는 많은 내장 함수가 존재합니다. fx라고 쓰여 있는 함수 삽입 아이콘을 누르면 최근에 사용한 함수가 선택되어 있고, 그 아래 모두, 재무, 날짜/시간 등 범주가 표시되고, 통계를 누르면 두 번째 average, 네 번째와 다섯 번째 averageif, averageifs 함수 등이 보입니다. 아래로 계속 내려가면 자주 사용하는 max, min, sum 등 함수도 보입니다. 위와 같이 자주 사용하는 함수를 엑셀을 미리 만들어 놓아서 사용자들이 사용하기 쉬운 환경을 만들어놓고, 계산을 쉽게 할 수 있도록 도와주는 것이 엑셀의 뛰어난 기능입니다. 나.사용자 지정 함수 사용자 지정 함수는 내장 함수로는 처리하기 어렵거나 복잡해지는 수식을 VB..

EXCEL - VBA 2022.10.07

엑셀의 표를 티스토리의 표로 변환하는 매크로(3) - 셀 병합1

아래와 같이 병합된 셀이 가로, 세로, 가로와 세로 모두된 경우를 대상으로 해보겠습니다. 작업할 파일은 아래와 같습니다. 1. 준비 가. 셀 병합 여부 및 유형 판단 VBA에서 병합된 경우는 병합된 셀의 개수를 세어 판단을 하는데, 단순히 셀주소.MergeArea.Count로 하면 병합된 셀의 방향을 알 수 없으므로, 셀주소.MergeArea.Rows.Count와 셀주소.MergeArea.Columns.Count를 사용해야 합니다. 가로,세로 모두 병합인지 알려면 2개를 모두 사용하면 됩니다. 개발도구 - Visual Basic을 눌러 Visual Basic Editor를 실행하고, 직접 실행창에(없다면 보기메뉴에서 직접 실행창을 클릭하면 됨) ?range("a1").Mergearea.Rows.count..

EXCEL - VBA 2022.09.29
반응형