티스토리 뷰

끄적끄적_연습장/VBA

Excel VBA 정리

QABABO 2015. 8. 10. 18:08

iexceller.com의 VBA 입문강좌를 정리한 내용입니다.



Visual Basic Editor 진입 : 도구-매크로-Visual Basic Editor (Alt+F11)

a. 프로젝트 탐색기 : 보기-프로젝트 탐색기 (Ctrl + R)

b. 속성 창 : 보기-속성 창 (F4)

c. 코드 입력 창 : 보기-코드 (F7)

d. 직접 실행 창 : 보기-직접 실행 창 (Ctrl+G) 


코드 작성 및 실행

a. 파일 - 새로 만들기

b. 도구 - 매크로 - Visual Basic Editor

c. 삽입 - 모듈 // Option Explicit 문장이 나타나면 주석처리(' 작은따옴표) 또는 삭제

d. 작성 ~

e. 실행 - Sub/사용자 정의 폼 실행 (F5) // 또는 도구모음에 실행 버튼


코드

Application.UserName : 사용자명

Application.Version : 엑셀 버전


Windows.Arrange xlTiled    //엑셀 창들을 바둑판식 정렬


Workbooks.Add : 새로운 통합 문서 추가

Application.DefaultFilePath : 파일을 열 때 사용되는 기본 경로 = 도구-옵션>일반>기본 파일 위치

ActiveWorkbook.SaveAs Filename:=Application.DefaultFilePath & "\Temp.xls"

// 기본 경로에 Temp.xls로 저장


번수지정

Dim 변수명 As 변수타입

// 변수 타입

// String : &로 연결, vbCr (캐리지리턴), vbLf (라인피드)

// Integer

// Workbook 등의 클래스?

ReDim 재정의?

Return = MsgBox("메시지", "버튼 종류")

// 버튼 종류

상  수

설  명

vbOKOnly

0

확인 단추 전용(default)

vbOKCancel

1

확인, 취소 단추

vbAbortRetryIgnore

2

중지, 다시 시도, 무시 단추

vbYesNoCancel

3

예, 아니오, 취소 단추

vbYesNo

4

예, 아니오 단추

vbRetryCancel

5

다시 시도, 취소 단추

vbCritical

16

치명적 오류 메시지

vbQuestion

32

경고 질문

vbExclamation

48

경고 메시지

vbInformation

64

정보 메시지

vbDefaultButton1

0

첫째 단추가 기본값입니다(default)

vbDefaultButton2

256

둘째 단추가 기본값입니다

vbDefaultButton3

512

셋째 단추가 기본값입니다

vbDefaultButton4

768

넷째 단추가 기본값입니다

vbApplicationModal

0

응용 프로그램 모달 메시지 상자(default)

vbSystemModal

4096

시스템 모달 메시지 상자

vbMsgBoxHelpButton

16384

메시지 상자에 도움말 단추를 추가합니다

vbMsgBoxSetForeground

65536

메시지 상자를 전경 창으로 지정합니다

vbMsgBoxRight

524288

텍스트가 오른쪽 맞춤 되었습니다

vbMsgBoxRtlReading

1048576

히브리어와 아랍어 시스템의 경우 텍스트의 읽기 방향이 오른쪽에서 왼쪽으로 나타나도록 지정합니다

// Return 선택한 버튼

상  수

설  명

vbOK

1

확인

vbCancel

2

취소

vbAbort

3

중단

vbRetry

4

다시 시도

vbIgnore

5

무시

vbYes

6

vbNo

7

아니오

사용자 입력

Return = InputBox("질문","질문창제목")

// Return : 사용자 입력값



서브 프로시저

Sub 프로시저명()

(코드)

End Sub


조건문

If (조건부) Then

(참 실행부)

Else

(거짓 실행부)

End If


반복문

For i = 1 To 20

~

Next i


Cells(x, y).Value    //x, y 셀 값

Cells(x, y).ClearContents     //x, y 셀 값 지우기


■ 워크시트 오브젝트(Worksheet object)

ActiveSheet.Name : 현재 선택된 시트 명, 값을 넣으면 시트명 변경 가능, 가져오기도 가능

※ Active~ 접두어 : 작업중인~ ActiveCell, ActiveWindow, ActivePane, ActiveWorkbook, ActiveChart 등

Worksheet.Add : 삽입-워크시트

Worksheets.Add after:=Worksheets(1), Count:=2

//after 위치, Count 삽입 개수


Worksheets("Sheet2").Activate

//sheet2 선택, Activate 대신 Select 메소드도 가능


Worksheets("Sheet1").Move after:=Worksheets("Sheet3")

//sheet3 뒤쪽으로 이동, after 인자 미지정 시에는 sheet1 이 새로운 문서로 분리됨


Application.DisplayAlerts = False    //삭제 대화창 끔
ActiveSheet.Delete                        //시트 삭제
Application.DisplayAlerts = True


■ 레인지 오브젝트(Range Object)

ActiveSheet.Rows.Count

// 현재 시트 행 수 카운트

ActiveSheet.Columns.Count

// 현재 시트 열 수 카운트


-Range 속성

Worksheets("Sheet1").Range("A1").Value = 100


Selection.ClearContents

//선택된 영역의 데이터를 지웁니다.

메서드설 명

Clear

내용과 서식을 모두 지웁니다.

ClearContents

내용만 지웁니다.

ClearFormats

서식만 지웁니다.

Worksheets("Sheet1").Range("A1:A10").Value = "엑셀 VBA"

Range("A1").CurrentRegion.Select

// A1과 인접한 셀 모두 선택


-Cells 속성

Cells(5,2) = 100

//B5 셀에 100 입력

//sells 앞에 아무것도 없으면 현재 워크시트를 대상으로 함

Range(Cells(3, 2), Cells(10, 5)).Select

//range와 조합 가능

Range("B2:E9").Cells(3, 2) = 100

//range 내의 좌표로 C4 값이 100이 됨

※ Cells 속성의 장점은 인수에 숫자를 사용할 수 있다는 것!


-Rows, Columns 속성

Rows("3:7").Value = "Test"

//3~7행의 모든 값을 Test로 변경

Range("B3:E7").Select

Selection.Columns = "Test"

//선택된 B3~E7 셀 범위의 모든 열의 값을 Test로 변경

Columns("B:E").Value = "Test"

//B:E 열의 값을 모두 Test로 변경

Selection.EntireRow.Select

// 선택된 행을 전체로 확장하여 선택

Selection.EntireColumn.Select

// 선택된 열을 전체로 확장하여 선택


-CurrentRegion 속성

Range("A1").CurrentRegion.Select

//A1과 인접한 모든 셀 선택, 지정한 셀에서 상하좌우 빈셀을 만날때까지 지속 확장

Range("A1").CurrentRegion.BorderAround Weight:=xlMedium

//선 긋기


Selection.Offset(1,0).Select

// offset을 이용하여 선택된 범위를 1행 아래로 내림

Selection.Resize(Selection.Rows.Count - 1, Selection.Columns.Count).Select

//  resize를 통해 범위 크기를 1행 줄임(제일 아래쪽 1행이 선택 제외됨)

Selection.Interior.ColorIndex = 44

// 색칠하기~


- UsedRange 속성

ActiveSheet.UsedRange.Select

// usedRange는 사용된 모든 영역을 선택하는 속성입니다.

// CurrentRegion은 Range 오브젝트의 속성

// UsedRange는 Worksheet 오브젝트의 속성


- Union 메서드

// 서로 떨어져 있는 여러 영역의 합집합


Set shtSheet = Sheets("Sheet6")

Set rngFirst = shtSheet.Range("A1").CurrentRegion
Set rngSecond = shtSheet.Range("G11").CurrentRegion
Set rngUnion = Application.Union(rngFirst, rngSecond)


- Intersect 메서드

//  두 개 이상의 영역 중에서 서로 겹쳐지는 영역의 주소를 알아낼 수 있다(교집합)


Set rngFirst = ActiveSheet.Range("A1:D8")
Set rngSecond = ActiveSheet.Range("C5:G12")

rngFirst.Select

rngSecond.Select

Set rngIntersect = Application.Intersect(rngFirst, rngSecond)
rngIntersect.Select