You are on page 1of 2

01/22/2021 20:52:04 Sheet1 506906195.

xls

LECTURE NO: VB0013(VBA코딩입문하기)//By Exceller

Homepage// Exceller's Home


E-mail// exceller@netian.com

이번 강좌부터 VBA에서 프로그래밍 하는 방법에 대해 본격적으로 알아보도록 하겠습니다.


들으시는, 아니 보시는 도중에 오브젝트나, 프로퍼티, 메서드 등의 개념이 자꾸 혼동되거나 하면 앞의 강좌로
돌아가서 다시 한번 훑어보고 오시기 바랍니다.

옆의 버튼을 누르세요.

이번 시간에는 위와 같이 간단한 프로그램을 짜 보도록 합니다.


아주 짧은 프로그램이라면 모르겠지만 어느 정도의 logic을 가진 프로그램이라면 직접 코딩을 하기 전에 많은
요소들을 미리 생각해 보아야 합니다. Flow도 생각해 보지 않고 바로 코딩에 들어가면 곧 헤매게 될 것입니다.
위와 같은 프로그램은 코딩에 조금만 익숙해지면 눈감고도 작성하겠지만 일단 우리는 처음 시작하는 것이니까
일단 프로그래밍의 순서를 생각해 보도록 하지요.

먼저, 변수를 지정해야 겠지요. 변수를 지정해야 하는 이유에 대해서는 예전에 설명을 드렸고…
쉽게 말해서 연극에서 등장인물을 미리 생각해서 지정해 주는 것이라고 할 수가 있겠지요.
(반드시 변수를 지정해야만 하는 것은 아닙니다만 제 경험에 의하면 이렇게 지정해 놓고 사용하는 것이
나중에 프로그램의 길이가 길어지고 복잡해질 경우 덜 헷갈리더군요. 머리속도 정리가 되고...)

그런 다음에, 각 등장인물(즉 변수)에 대해 어떤 역할을 부여해야 겠지요. 즉 변수의 고유값을 설정하고…


마지막으로, 각 변수값을 더한 다음 이것을 화면에 뿌려주면 되겠군요.
이런 과정을 코딩해 보면 아래와 같이 될 것입니다.

"도구-매크로-Visual Basic Editor" 메뉴를 선택하여 VB 에디터를 띄운 상태에서 모듈시트를 하나 삽입하고


아래의 코드를 직접 입력해 보세요.(복사-붙여 넣기를 해도 되지만 직접 입력해 보는 것이 코드에 익숙해지는
지름길 이지요. 백견이 불여일打!!!)

Sub 합계구하기()
'변수 지정
Dim X As Integer
Dim Y As Integer
Dim Z As Integer

'변수값 대입
X = 10
Y=5
Z = 20
'결과값 표시
MsgBox "결과값은 " & X * Y * Z & " 입니다", , "//Exceller"
End Sub

잘 되지요?
위의 코드를 아래와 같이 바꿀 수도 있습니다.

Sub 합계구하기2()
'변수 지정
Dim X As Integer, Y as Integer, Z As Integer

'변수값 대입
X = 10: Y = 5: Z = 20
'결과값 표시
MsgBox "결과값은 " & X * Y * Z & " 입니다", , "//Exceller"
End Sub

기능적으로는 똑같은데 여러 라인을 한 라인으로 합쳤지요?


주의할 점! 코든 읽기가 쉬워야 합니다. 필요 이상으로 행을 축약해서 쓰면 나중에 보기가 쉽지 않습니다.

2쪽 중 1쪽
01/22/2021 20:52:04 Sheet1 506906195.xls

따라서 가급적이면 한라인에는 하나의 문장만을 쓰도록 하세요.

그리고 위에서 보면 초록색으로 표시된 글자가 있지요?


이것은 주석을 나타내는 표시로서 나중에 이 코드를 보았을 때 쉽게 알 수 있도록 해주며 VBA 코드를 실행할
때에는 제외됩니다.
주석임을 표시해 주는 방법은 아주 간단합니다. 아무 데서나 '(작은 따옴표)를 적고 그 뒤에 문장을 적어주면
작은 따옴표 뒤의 부분은 주석으로 간주됩니다. 주석문임을 표시하는 또 한가지 방법이 있는데 "Rem"을 사용
하는 것입니다.

즉 [Rem 변수 지정]과 ['변수 지정]


이 두 가지는 서로 같은 것이지요. 단, Rem文은 라인의 맨 처음에서만 사용을 할 수가 있습니다. 이것이 더
불편하지요? 그러므로 '(작은 따옴표)를 주로 사용합니다.

자, 이렇게 하면 프로그램은 잘 실행이 되는데 아직도 불편하기 짝이없지요?


X, Y, Z라는 변수의 값이 항상 고정이 되어서 다른 계산은 할 수가 없습니다. 따라서 좀 융통성이 있는 형태로
만들어 볼까요?
다시 말해서 사용자가 임의의 변수값을 입력하면 그 값의 합계를 구하는 프로그램을 작성해 보자는 것입니다.

어떻게 하면 좋을까요?
사용자로부터 특정값을 받기 위해서는 InputBox()라는 메서드를 사용하면 됩니다.

Sub 합계구하기3()
'변수 지정
Dim X As Integer
Dim Y As Integer
Dim Z As Integer
Dim strXYZ As String

'변수값 대입
X = InputBox("첫번째 값을 입력하세요", "//Exceller")
Y = InputBox("두번째 값을 입력하세요", "//Exceller")
Z = InputBox("세번째 값을 입력하세요", "//Exceller")

'결과값 표시
strXYZ = "첫번째 입력하신 값은 " & X & "이고," & vbCr
strXYZ = strXYZ & "두번째 입력하신 값은 " & Y & "이며," & vbCr
strXYZ = strXYZ & "세번째로 입력하신 값은 " & Z & "입니다." & vbCr & vbCr
strXYZ = strXYZ & "따라서 결과값은 "
MsgBox strXYZ & X + Y + Z & " 입니다", , "//Exceller"
End Sub

이렇게 하면 사용자가 마음대로 숫자값을 입력할 수 있고 그에 따라 결과값도 연동이 되어 변하겠지요?


단 숫자 형식이 정수형(Integer) 이므로 -32,768 ~ 32,767 사이의 값을 넣어야지 그렇지 않으면 에러가 나지요.
만약 엄청 큰 숫자값도 받아들이게 하고 싶으면 Integer 대신에 Long이나 Single, Double 등의 형식으로 바꾸어
주면 됩니다.

다음 시간에…

5/18/2000

2쪽 중 2쪽

You might also like