Sub,Function Procedure|Sub|Function|End|Argument|Parameter|Procedure Block|
프로그래밍은 여러기능들을 분해,조립하는 작업
간단한 한줄의 명령문으로
Sub Procedure나 Function Procedure를
만들기도 하고 여러줄을 모아서 하나의 프로시져로 꾸미기도 한다
프로시져도 명령문들을 모아 놓은 하나의 Block구문이라고 할수 있다
아이들의 레고블록을 조립하듯이 여러개의 블록들이 모여서
원하는 소루션이 되는것이다
엑셀워크시트에서 워크시트함수는 항상 결과값을 셀에 나타내 준다
엑셀프로그래밍에서도 역시 이런 기능이 필요하게 된다
세상의 일을 개선한다고 하는것은 중복되는 일을 배제하려고 노력하거나
일의 순서를 조정하거나 쓸데없는 일을 찾아서 없애는것이다
엑셀프로그래밍도 역시 마찬가지다
이렇게 몇개의 프로시져와 몇개의 함수로 적절히 구성 할것인가??
그런 생각을 하는것이 프로그래밍인것이다
아래의 예도 간단하지만 그런 컨셉을 나타낸 것이다
'*******************하나의 프로시져로 구성
Sub calculateVolumn()
Dim lngX As Long, lngY As Long, lngH As Long
Dim lngVolumn As Long
lngX = InputBox("가로를 입력하세요")
lngY = InputBox("세로를 입력하세요")
lngH = InputBox("높이를 입력하세요")
lngVolumn = lngX * lngY * lngH
MsgBox "부피는 " & lngVolumn & " 입니다"
End Sub
'*******************두개의 프로시져로 구성
Sub calculateVolumn_1()
Dim lngX As Long, lngY As Long, lngH As Long
Dim lngVolumn As Long
lngX = getV("가로")
lngY = getV("세로")
lngH = getV("높이")
lngVolumn = lngX * lngY * lngH
MsgBox "부피는 " & lngVolumn & " 입니다"
End Sub
Function getV(strX As String)
getV = InputBox(strX & "를 입력하세요")
End Function
함수를 호출하면서 변수가 전달되는것을 보았을것이다
함수나 섭프로시져에 전달되는 정보를 인수(Argument)라고 하고
이것을 받아들이는 변수를 Parameter라고 한다
함수나 프로시져에는 필요에 따라 여러개의 인수(정보)가 전달되기도 하고 전달하지 않기도 한다
Function sample(sWhat As String) As Long 에서
sWhat은 함수의 이름내에 만들어진 변수..이것을 Parameter라고 하고
이 함수를 호출하면서 전달하는 구문
iX=getV("가로") 에서
"가로"라는 정보를 인수(Argument)라고 한다
화일에는 이페이지에서 설명되는것 외에
아직 소개되지 않은 엑셀오브젝트등이
취급되지만 단순히 프로시져를 기능별로 어떻게 나누는지에
관심을 두고 보시기 바란다
Make 100 StarShapes
위와 같이 프로시져에서 프로시져를 호출할수도 있고
프로시져에서 함수를 호출하기도 하고
하나의 프로그램은 여러개의 모듈시트와 그리고 모듈시트는
여러개의 섭프로시져와 여러개의 함수프로시져로 구성 되는것이다
물론 간단한것은 하나의 Sub Procedure로 처리도 될것이고
몇개의 간단한 Sub Procedure와 Function Procedure로 구성되기도 할것이다
프로그래밍은 아이들이 레고블록을 다양하게 조합 구성하듯이
다양한 모습을 여러분의 상상력속에서 만들어 내는 것이다
프로시져나 변수의 이름을 지을때는 지켜야할 점들이 있다
- 이름은 숫자로 사용하면 안된다 Sub 124() 과 같이 하면 안된다
반드시 앞의 첫글자는 숫자가 아닌 문자여야 한다
그냥 숫자만 사용하고 싶다면 Sub X124()와 같이 앞에 문자가 사용되어야 한다
- 이름은 문자와 숫자와 언더스코어문자만 사용할수 있다
(!,|,*,& ,#..등)의 문자는 사용할수 없다
- 문자와 문자사이에 공간을 주면 안된다
공간을 띄우고 싶다면 (_)문자를 사용한다 Sub Cell_Print()와 같이
- 이름은 프로시져가 하는 일을 설명해주는 짧은 글로 작성하려고
노력하는것이 좋다
예를 들면 서식을 하는 명령이라면 Sub 서식하기()와 같이
- 만약 영문으로 이름을 짓는다면 대문자 소문자를 적절히 활용하는것이
식별하기가 편하고 좋다,예를 들어 데이타베이스에서 정보를 갖여오는 내용이라면 Sub getDataFromDB()
- 모듈의 이름이라던가 VB에서 제공하는 예약어(KeyWord,ReservedWord)
(내장함수명,오브젝트명 등등의 이미 정해진 단어들)를 사용하면 안된다
- 위의 규칙만 지킨다면 길이는 길어도 상관없다(250자가 넘어도 별문제 없었다)
그러나 그렇게 무식하게 길게 붙이는 사람은 없을것이다