엑셀 VBA 변수 사용예제
VBA에서 자주쓰는 변수 7가지의 실전 사용예제! - VBA 코딩의 시작
이 강의에서는 엑셀 VBA에서 자주 사용하는 7가지 데이터타입(Integer, Long, Double, String, Variant, Boolean, Object) 변수를 직접 선언하고 값을 할당하는 방법을 다룹니다. Dim 명령문으로 변수를 선언하고, 개체 변수에 한해 Set 키워드로 값을 할당하는 차이를 실습 코드와 함께 살펴봅니다. 마지막으로 MsgBox와 [ & ] 연산자를 활용해 각 변수의 결과를 메시지창에 출력하며 VBA 코딩의 기본기를 정리합니다.
실습자료를 준비했어요
수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇
1. VBA 코드 전문
Sub DataType_Test() Dim MyInt As Integer Dim MyLng As Long Dim MyDbl As Double Dim MyStr As String Dim MyVar As Variant Dim MyBln As Boolean Dim MyObj As Range '=============================== 'Range("A1") 값 = 1 '=============================== MyInt = Range("A1") MyLng = Range("A1") MyDbl = Range("A1") MyStr = Range("A1") MyVar = Range("A1") MyBln = Range("A1") Set MyObj = Range("A1") MsgBox "Integer: " & MyInt MsgBox "Long: " & MyLng MsgBox "Double: " & MyDbl MsgBox "String: " & MyStr MsgBox "Variant: " & MyVar MsgBox "Boolean: " & MyBln MsgBox "Object: " & MyObj.Value MsgBox "Integer + Integer: " & MyInt + MyInt MsgBox "Double + Double: " & MyDbl + MyDbl MsgBox "String + String: " & MyStr + MyStr MsgBox "Variant + String: " & MyStr + MyVar End Sub
2. VBA 명령문 코드 분석
2-A. 변수 지정
Dim 명령문으로 각 변수를 알맞은 데이터타입에 맞춰 선언합니다.
각 데이터타입에 대한 자세한 설명은 이전 강의 엑셀 VBA에서 자주 사용하는 데이터타입 7가지를 참고하세요.
Dim MyInt As Integer Dim MyLng As Long Dim MyDbl As Double Dim MyStr As String Dim MyVar As Variant Dim MyBln As Boolean Dim MyObj As Range
2-B. 지정된 변수에 데이터 할당
선언한 각 변수에 데이터(예제에서는 A1 셀의 값)를 할당합니다.
일반적인 데이터타입(숫자·문자)은 등호(=) 만으로 값을 할당하지만, 그 외의 데이터타입(주로 개체[Object] 타입)은 반드시 Set 키워드로 값을 할당해야 합니다.
Dim과 Set으로 개체 변수를 다루는 자세한 방법은 이후 강의에서 다룹니다.
MyInt = Range("A1") MyLng = Range("A1") MyDbl = Range("A1") MyStr = Range("A1") MyVar = Range("A1") MyBln = Range("A1") Set MyObj = Range("A1")
3. 각 변수를 메세지박스로 출력
MsgBox(메시지박스 출력 함수)로 각 변수에 할당된 값을 메시지창에 출력합니다.
MsgBox 함수에는 다양한 속성값이 있지만, 별도의 속성값을 입력하지 않아도 아래와 같이 짧은 문구만으로 간단히 사용할 수 있습니다.
Msgbox "원하는 내용 입력"[ & ] 연산자를 사용하면 직접 입력한 문자열(""안의 내용)과 변수에 할당된 값을 함께 묶어 출력할 수 있습니다.
MsgBox "Integer: " & MyInt MsgBox "Long: " & MyLng MsgBox "Double: " & MyDbl MsgBox "String: " & MyStr MsgBox "Variant: " & MyVar MsgBox "Boolean: " & MyBln
여기에 질문을 드려도 답변이 달리지는 모르겠지만 답답한 마음에 올려봅니다.
시청자수가 나날이 늘고있어서 보시기는 힘드시겠지만 우연히라도 보셨으면 좋겠네요..
Sub 테스트_매크로()
Dim PTNo As String 'PTNo로 지정하고 싶은것은 셀안에 숫자 4자리입니다.'
PTNo = Range("V10")
Range("A12:V10000").Select
Selection.AutoFilter
ActiveSheet.Range("$A$12:$V$10000").AutoFilter Field:=4, Criteria1:="*PTNo*"
'엑셀 자동필터에서 "*텍스트*"로 입력하면 텍스트를 포함한 내용들이 필터링 되더군요. 그래서 PTNo라는 변수의 V10 셀값을 포함하는 필터링을 하고싶은데 잘되지않는군요... 방법을 알 수 있을까요?
ActiveSheet.Range("$A$12:$V$10000").AutoFilter Field:=22, Criteria1:="오빠두"
Range("D13:D10000").Select
With Selection.Font '빨강
.Color = -16776961
.TintAndShade = 0
End With
Range("$A$12").Select
ActiveWindow.ScrollRow = 1
End Sub
Criteria를 Variant 의 배열형태로 만들어보세요.
Dim PTNo as variant
PTNO(0) = Range("V10")
감사합니다!
여기에 질문을 드려도 답변이 달리지는 모르겠지만 답답한 마음에 올려봅니다.
시청자수가 나날이 늘고있어서 보시기는 힘드시겠지만 우연히라도 보셨으면 좋겠네요..
Sub 테스트_매크로()
Dim PTNo As String 'PTNo로 지정하고 싶은것은 셀안에 숫자 4자리입니다.'
PTNo = Range("V10")
Range("A12:V10000").Select
Selection.AutoFilter
ActiveSheet.Range("$A$12:$V$10000").AutoFilter Field:=4, Criteria1:="*PTNo*"
'엑셀 자동필터에서 "*텍스트*"로 입력하면 텍스트를 포함한 내용들이 필터링 되더군요. 그래서 PTNo라는 변수의 V10 셀값을 포함하는 필터링을 하고싶은데 잘되지않는군요... 방법을 알 수 있을까요?
ActiveSheet.Range("$A$12:$V$10000").AutoFilter Field:=22, Criteria1:="오빠두"
Range("D13:D10000").Select
With Selection.Font '빨강
.Color = -16776961
.TintAndShade = 0
End With
Range("$A$12").Select
ActiveWindow.ScrollRow = 1
End Sub
감사합니다.