excel-vba 튜토리얼
excel-vba 시작하기
수색…
비고
Microsoft Excel에는 VBA라는 포괄적 인 매크로 프로그래밍 언어가 포함되어 있습니다. 이 프로그래밍 언어는 최소한 다음 세 가지 추가 리소스를 제공합니다.
- 매크로를 사용하여 코드에서 Excel을 자동으로 실행합니다. 대부분 사용자 인터페이스에서 Excel을 조작하여 사용자가 수행 할 수있는 작업은 Excel VBA에 코드를 작성하여 수행 할 수 있습니다.
- 사용자 지정 워크 시트 함수를 새로 만듭니다.
- Microsoft Word, PowerPoint, Internet Explorer, 메모장 등과 같은 다른 응용 프로그램과 Excel을 상호 작용하십시오.
VBA는 Visual Basic for Applications의 약자입니다. 그것은 1990 년대 중반 이후로 Microsoft Excel의 매크로를 구동 한 훌륭한 Visual Basic 프로그래밍 언어의 사용자 지정 버전입니다.
중대한
excel-vba 태그 내에 생성 된 예제 나 항목이 Microsoft Excel에서 VBA 사용과 관련 이 있고 구체적 이어야합니다. 노력의 중복을 막기 위해 VBA 언어에 대해 일반적으로 제공되는 제안 된 주제 나 예제는 거절해야합니다.
주제에 관한 예 :
✓ 워크 시트 개체 생성 및 상호 작용
✓WorksheetFunction
클래스 및 해당 메서드
✓xlDirection
열거 형을 사용하여 범위 탐색
주제 외의 예 :
''for each '루프를 만드는 법
✗MsgBox
클래스 및 메시지 표시 방법
V VBA에서 WinAPI 사용하기
버전
VB
번역 | 출시일 |
---|---|
VB6 | 1998-10-01 |
VB7 | 2001-06-06 |
WIN32 | 1998-10-01 |
WIN64 | 2001-06-06 |
맥 | 1998-10-01 |
뛰어나다
번역 | 출시일 |
---|---|
16 | 2016-01-01 |
15 명 | 2013-01-01 |
14 | 2010-01-01 |
12 | 2007-01-01 |
11 | 2003-01-01 |
10 | 2001-01-01 |
9 | 1999-01-01 |
8 | 1997-01-01 |
7 | 1995-01-01 |
5 | 1993-01-01 |
2 | 1987-01-01 |
변수 선언하기
VBA에서 명시 적으로 변수를 선언하려면 Dim
문 다음에 변수 이름과 형식을 사용합니다. 변수를 선언하지 않고 사용하거나 유형을 지정하지 않으면 Variant
유형이 지정됩니다.
모든 변수를 사용하기 전에 강제로 선언하려면 모듈의 첫 번째 행에 Option Explicit
문을 사용하십시오 ( 항상 "Option Explicit"사용 참조).
오타 / 철자 오류를 방지하고 변수 / 개체가 원하는 형식을 유지할 수 있도록 항상 Option Explicit
사용하는 것이 좋습니다.
Option Explicit
Sub Example()
Dim a As Integer
a = 2
Debug.Print a
'Outputs: 2
Dim b As Long
b = a + 2
Debug.Print b
'Outputs: 4
Dim c As String
c = "Hello, world!"
Debug.Print c
'Outputs: Hello, world!
End Sub
구분 기호로 쉼표를 사용하여 한 줄로 여러 변수를 선언 할 수 있지만 각 유형은 개별적으로 선언해야하며 , 기본값은 Variant
유형입니다.
Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str) 'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng) 'Output: Long
변수는 데이터 유형 문자 접미사 ($ % &! # @)를 사용하여 선언 할 수도 있지만 사용 방법은 권장하지 않습니다.
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim this@ 'Currency
변수를 선언하는 다른 방법은 다음과 같습니다.
-
Static
처럼 :Static CounterVariable as Integer
Dim 문 대신 Static 문을 사용하면 선언 된 변수는 호출간에 값을 유지합니다.
-
Public
like :Public CounterVariable as Integer
공용 변수는 프로젝트의 모든 프로 시저에서 사용할 수 있습니다. 공용 변수가 표준 모듈 또는 클래스 모듈에서 선언 된 경우 공용 변수가 선언 된 프로젝트를 참조하는 모든 프로젝트에서 공용 변수를 사용할 수도 있습니다.
-
Private
:Private CounterVariable as Integer
전용 변수는 동일한 모듈의 프로 시저에서만 사용할 수 있습니다.
출처 및 추가 정보 :
Visual Basic Editor (VBE) 열기
1 단계 : 통합 문서 열기
2 단계 옵션 A : Alt + F11을 누릅니다.
이것은 VBE를 여는 표준 바로 가기입니다.
2 단계 옵션 B : 개발자 탭 -> 코드보기
먼저 개발자 탭을 리본에 추가해야합니다. 파일 -> 옵션 -> 리본 사용자 정의로 이동 한 다음 개발자 상자를 선택하십시오.
그런 다음 개발자 탭으로 이동하여 "코드보기"또는 "Visual Basic"
2 단계 옵션 C :보기 탭> 매크로> 편집 버튼을 클릭하여 기존 매크로를 엽니 다.
세 가지 옵션 모두 VBE (Visual Basic Editor)가 열립니다.
새로운 Object Library Reference 추가하기
이 절차에서는 Object 라이브러리 참조를 추가하는 방법과 나중에 새 라이브러리 클래스 객체를 참조하여 새 변수를 선언하는 방법에 대해 설명합니다.
아래 예제는 기존 VB 프로젝트에 PowerPoint 라이브러리를 추가하는 방법을 보여줍니다. 보시다시피 현재 PowerPoint 개체 라이브러리를 사용할 수 없습니다.
2 단계 : 추가 할 참조를 선택하십시오. 이 예제에서는 아래로 스크롤하여 " Microsoft PowerPoint 14.0 Object Library "를 찾은 다음 " 확인 "을 누릅니다.
참고 : PowerPoint 14.0은 Office 2010 버전이 PC에 설치되어 있음을 의미합니다.
3 단계 : VB 편집기에서 Ctrl + Space 를 누르면 PowerPoint의 자동 완성 옵션이 나타납니다.
PowerPoint
선택하고를 누르십시오 .
PowerPoint 개체 라이브러리와 관련된 모든 개체 옵션이있는 다른 메뉴가 나타납니다. 이 예제에서는 PowerPoint의 개체 Application
을 선택하는 방법을 보여줍니다.
4 단계 : 이제 사용자는 PowerPoint 개체 라이브러리를 사용하여 더 많은 변수를 선언 할 수 있습니다.
PowerPoint 개체 라이브러리의 Presentation
개체를 참조하는 변수를 선언하십시오.
PowerPoint 개체 라이브러리의 Slide
개체를 참조하는 다른 변수를 선언하십시오.
이제 변수 선언 섹션은 아래 스크린 샷과 유사하며 사용자는 코드에서 이러한 변수를 사용할 수 있습니다.
이 자습서의 코드 버전 :
Option Explicit
Sub Export_toPPT()
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
' here write down everything you want to do with the PowerPoint Class and objects
End Sub
안녕하세요 세계
- Visual Basic Editor를 엽니 다 (Visual Basic Editor 열기 참조).
- 삽입 -> 모듈을 클릭하여 새 모듈을 추가하십시오.
- 다음 코드를 복사하여 새 모듈에 붙여 넣습니다.
Sub hello()
MsgBox "Hello World !"
End Sub
획득 방법 :
Excel 개체 모델 시작하기
이 예제 는 초보자를위한 Excel Object Model에 대한 소개입니다.
- VBE (Visual Basic Editor)를 엽니 다.
- 보기 -> 직접 실행 창을 클릭하여 직접 실행 창 (또는 ctrl + G )을 엽니 다.
- VBE의 아래쪽에 다음과 같은 직접 실행 창이 표시됩니다.
이 창에서 일부 VBA 코드를 직접 테스트 할 수 있습니다. 시작하자.이 콘솔에 다음을 입력하자.
?Worksheets.
VBE는 인텔리 센스가 있으며 다음 그림과 같이 툴팁을 열어야합니다.
목록에서 .Cout
를 선택하거나 .Cout
을 직접 입력하여 얻을 수 있습니다.
?Worksheets.Count
- 그런 다음 Enter 키를 누릅니다. 표현식이 평가되고 1을 반환해야합니다. 이는 현재 통합 문서에있는 워크 시트 수를 나타냅니다. 물음표 (
?
)는 Debug.Print의 별칭입니다.
워크 시트는 Object 이고 Count는 메서드 입니다. Excel에는 여러 개체 ( Workbook
, Worksheet
, Range
, Chart
..)가 있으며 각 개체에는 특정 메서드와 속성이 포함되어 있습니다. Excel VBA 참조 에서 전체 개체 목록을 찾을 수 있습니다. 워크 시트 개체가 여기 에 표시 됩니다 .
이 Excel VBA 참조는 Excel 개체 모델과 관련된 주요 정보 소스가되어야합니다.
- 이제 또 다른 표현식을 시도해 봅시다 (
?
문자없이) :
Worksheets.Add().Name = "StackOveflow"
- 엔터 키를 치시오.
StackOverflow.
라는 새로운 워크 시트를 만들어야합니다StackOverflow.
:
이 표현식을 이해하려면 앞서 언급 한 Excel 참조에서 Add 함수를 읽어야합니다. 다음을 찾을 수 있습니다.
Add: Creates a new worksheet, chart, or macro sheet.
The new worksheet becomes the active sheet.
Return Value: An Object value that represents the new worksheet, chart,
or macro sheet.
따라서 Worksheets.Add()
는 새 워크 시트를 만들어 반환합니다. 워크 시트 ( 없는 )는 문서 자체에서 찾을 수 있는 Object이며 Name
은 해당 속성 중 하나입니다 ( 여기 참조). 그것은 다음과 같이 정의됩니다 :
Worksheet.Name Property: Returns or sets a String value that
represents the object name.
따라서 다양한 객체 정의를 조사 Worksheets.Add().Name = "StackOveflow"
코드 Worksheets.Add().Name = "StackOveflow"
를 이해할 수 있습니다.
Add()
는 새 워크 시트를 만들고 추가 한 다음 그에 대한 참조 를 반환 한 다음 Name 속성 을 "StackOverflow"로 설정합니다.
이제 더 공식적으로 보겠습니다. Excel에는 여러 개체가 포함되어 있습니다. 이러한 개체는 동일한 클래스의 하나 이상의 Excel 개체 컬렉션으로 구성 될 수 있습니다. Worksheet
객체의 모음 인 WorkSheets
의 경우입니다. 각 Object에는 프로그래머가 상호 작용할 수있는 몇 가지 속성과 메서드가 있습니다.
Excel 개체 모델은 Excel 개체 계층을 참조합니다.
모든 개체의 맨 위에는 Application
개체가 있으며 Excel 인스턴스 자체를 나타냅니다. VBA 프로그래밍에서는이 계층을 잘 이해해야합니다. 메서드를 호출하거나 속성을 설정 / 가져 오기 위해 개체에 대한 참조가 항상 필요하기 때문입니다.
(매우 단순화 된) Excel Object Model은 다음과 같이 표현 될 수 있습니다.
Application
Workbooks
Workbook
Worksheets
Worksheet
Range
Excel 2007에서와 같이 워크 시트 개체에 대한 자세한 버전은 아래에 나와 있으며,
마지막으로 일부 개체에는 Excel 개체 모델의 일부인 events
(예 : Workbook.WindowActivate
)가있을 수 있습니다.