image

VBA의 클래스는 무엇입니까?

클래스는 생성 될 객체의 청사진입니다. 클래스 자체는 아무것도하지 않지만 클래스를 사용하면 작업을 수행하거나 데이터 리소스로 사용할 수있는 동일한 개체를 여러 개 만들 수 있습니다.

실생활에서 자동차의 모델 (디자인과 기능)은 클래스이고 자동차 자체는 그 클래스의 대상입니다. 수업에서 우리는 차에 무엇이 있고 무엇을 할 수 있는지 정의합니다. 예를 들어, 자동차에는 4 개의 바퀴, 5 개의 기어, 스티어링 휠 등이 있습니다. 이들은 속성 / 속성입니다.

우리는 또한 전진, 후진, 회전 등과 같이 자동차가 할 수있는 일을 정의합니다. 이들은 자동차 클래스의 기능입니다. car 클래스를 사용하여 생성 된 car 객체는 이러한 모든 속성을 갖습니다. 이 클래스를 사용하여 만든 자동차보다 5 개의 바퀴가있는 자동차를 정의하면 5 개의 바퀴가 있습니다. 당신은 요점을 얻습니다.

충분한 이론이 있으므로 이제 VBA에서 클래스 모듈을 사용하는 방법을 살펴 보겠습니다.

Excel VBA 클래스 모듈 사용

VBA에서 작업하는 동안 Range ( “A1”). select를 사용해야합니다. Range는 VBA에서 미리 정의 된 클래스입니다. select는 지정된 범위를 선택하는 Range 클래스의 기능 중 하나입니다. 마찬가지로 Debug는 VBA의 클래스이며 인쇄 및 assert 메서드입니다. 워크 시트, 워크 북, 범위 등은 모두 서브에서 사용하는 VBA 클래스입니다.

image

자신 만의 클래스 만들기

먼저 VBA에 클래스 모듈을 추가해야합니다. Alt + F11 키 조합을 눌러 Excel VBA 편집기를 엽니 다.

  • 프로젝트 탐색기를 마우스 오른쪽 버튼으로 클릭합니다. 커서를 삽입→ 클래스 모듈로 이동하십시오. 그것을 클릭하십시오. 삽입 메뉴에서도 동일한 작업을 수행 할 수 있습니다.

image

  • 클래스는 “Class module”폴더에 추가됩니다. 기본 이름은 class1, class2 등입니다. 속성 창에서 클래스 이름을 변경할 수 있습니다. 클래스 이름을 “Welcome”으로 지정하겠습니다.

image

이제 클래스에 속성을 추가해 보겠습니다. 이러한 속성을 대중이 사용할 수 있기를 원하기 때문에 접근성 연산자 * public을 사용합니다.

Public name As String

Public var1 As Integer

Public var2 As Integer
  • 이제이 클래스에 함수를 추가해 보겠습니다. Hi!라는 기능을 원합니다. 사용자에게. 그렇게하려면 하위를 추가하고 이름을 sayHiTo로 지정합니다.

Sub sayHiTo(user As String)

name = user

MsgBox ("Hi! " & name)

End Sub
  • 이제 모듈에서 클래스를 사용합시다. 없는 경우 새 모듈을 삽입하십시오. 서브를 작성하십시오. 내 하위 테스트라는 이름을 지정했습니다.

Sub test()

Dim wc As New Welcome 'Declared and initialized Welcome object

wc.sayHiTo ("Jack") 'used sayHiTo method of Welcome Object.

End Sub
  • F5 키를 사용하여이 하위 테스트를 실행합니다. Excel 워크 북에 “Hi! Jack”이라는 메시지가 표시됩니다.

image

어떻게 작동합니까?

서브 테스트에서 우리는 Welcomeclass의 “wc”객체를 생성했습니다. 객체는 두 가지 방법으로 VBA에서 생성됩니다. 코드를 실행하고 Test sub는 Welcome 클래스의 wc 객체를 생성합니다. 이 개체에는 Welcome 클래스의 모든 속성이 있습니다. Welcome 클래스의 sayHiTo 메서드를 사용하여 사용자에게 인사합니다.

Excel VBA에서 개체 생성

  1. .. 즉시 생성 즉시 생성에서는 “new”키로 객체를 선언하면서 객체를 생성합니다. 위의 예에서는 즉시 생성을 사용했습니다.

Dim wc As New Welcome

{비어 있음} 2. 지연된 생성 지연된 생성에서는 먼저 객체 만 선언합니다. “new”키워드를 사용하지 않습니다. 객체를 사용하려면 “new”키워드로 초기화해야합니다.

Sub test()

Dim wc As Welcome

'wc.sayHiTo ("Jack") 'generates error since wc is not initialised yet

'initialising object

Set wc = New Welcome

wc.sayHiTo ("Cory") 'this will work.

End Sub

클래스의 변수에 접근하기

위의 예제에서는 클래스에 공용 변수를 사용했지만 연습하는 것은 잘못되었습니다. 클래스에서 공용 변수를 사용하지 않아야합니다.

이제 문제는 우리가 클래스의 변수에 어떻게 접근 할 것인가하는 것입니다. 이전에는 서브 루틴을 사용하여 이름에 액세스했지만 VBA 클래스는 클래스의 개인 변수 값을 체계적으로 업데이트하고 검색하는 데 사용되는 속성을 제공합니다. 속성은 개인 변수를 업데이트하고 액세스하기 위해 sub 또는 함수보다 더 우아합니다. 방법을 봅시다.

클래스 속성 구문

Private name As String

Private var1 As Integer

Private var2 As Integer

Property Let MyName(nm As String)

name = nm

End Property

Property Get MyName() As String

MyName = name

End Property

모듈에서 사용합시다.

Sub test()

'creating class object

Dim wc As New Welcome

Dim wc1 As New Welcome



'using properties

wc.MyName = "Exceltip.com"

wc1.MyName = "ExcelForum.com"



Debug.Print wc.MyName

Debug.Print wc1.MyName



End Sub

이 테스트 하위를 실행하면 “Welcome”클래스의 두 개체에 대해 두 개의 이름이 인쇄됩니다.

속성이 하위 및 함수와 어떻게 다른지

위의 예에서 MyName 속성을 변수로 사용했습니다. wc.MyName = “assdf”를 작성하여 “Name”변수의 값을 초기화했습니다.이 명령 줄은 Property Get MyName () As String이라는 속성을 호출했습니다. 처음에했던 것처럼 괄호 안에 값을 전달하지 않았습니다.

마찬가지로 “Name”변수의 값을 인쇄하기 위해 commandDebug.Print wc.MyName을 사용했습니다. 일반 변수 초기화만큼 간단하지 않습니까? 유일한 차이점은 속성 세그먼트에서 많은 일을 할 수 있다는 것입니다. 데이터 유효성 검사, 계산, 통신 등을 입력하면 사용자는 결과 만 볼 수 있습니다.

또 다른 차이점은 let 및 get * part에 동일한 이름의 속성을 사용할 수 있다는 것입니다. 이것은 더 쉽고 덜 혼란스럽게 만듭니다.

네, 이것은 Excel VBA의 클래스 모듈의 간단한 예입니다.

이것은 빙산의 일각에 불과합니다.이 주제에는 이후 기사에서 살펴볼 내용이 많이 있습니다. 가능한 가장 쉬운 방법으로 하나씩 하나씩 살펴 보겠습니다. 당신이 이것을 이해할 수있을만큼 충분히 설명했으면합니다. 이 주제 또는 기타 Excel VBA 주제에 대해 의문이있는 경우 아래 댓글 섹션에 언급하십시오.

관련 기사 :

`link : / modules-class-modules-in-vba-insert-a-new-module-from-a-file-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하여 파일에서 모듈 가져 오기] `| VBA를 사용하여 다른 파일에서 전체 모듈을 가져 오는 방법을 알아 봅니다.

link : / modules-class-modules-in-vba-create-a-new-module-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하여 새 모듈 만들기]| 모듈을 사용하여 VBA에서 다른 모델을 만들 수 있습니다. 이렇게하면 추가 오버 헤드 작업을 최소화 할 수 있습니다.

link : / modules-class-modules-in-vba-add-a-procedure-to-a-module-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하여 모듈에 프로 시저 추가]| 모듈에 프로 시저를 자동으로 추가하려면이 VBA 코드를 사용하십시오.

인기 기사 :

link : / keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [50 개의 Excel 단축키로 생산성 향상]| 작업 속도를 높이십시오. 이 50 개의 바로 가기를 사용하면 Excel에서 더 빠르게 작업 할 수 있습니다.

link : / formulas-and-functions-introduction-of-vlookup-function [Excel의 VLOOKUP 함수]| 이것은 다른 범위와 시트에서 값을 조회하는 데 사용되는 Excel의 가장 많이 사용되고 인기있는 기능 중 하나입니다. link : / tips-countif-in-microsoft-excel [Excel 2016의 COUNTIF]| 이 놀라운 기능을 사용하여 조건으로 값을 계산합니다.

특정 값을 계산하기 위해 데이터를 필터링 할 필요가 없습니다. Countif 기능은 대시 보드를 준비하는 데 필수적입니다.

link : / excel-formula-and-function-excel-sumif-function [Excel에서 SUMIF 함수 사용 방법]| 이것은 또 다른 대시 보드 필수 기능입니다. 이를 통해 특정 조건에 대한 값을 합산 할 수 있습니다.