For Effective Your Life!!
UNO-WEEKLY


VBA Tips..

Parameter And Argument| 매개변수와 인수

매개변수 Parameter
인수 Argument
함수의 매개변수에 인수를 전달합니다..
pass Argument to Parameter of function
이라는 말을 우리뿐만 아니고 영어를 하는 그들 도 헷갈린다
그래서 Microsoft의 VB문법을 설명하는 곳에 이렇게 재미있게해놓은 것이 있다
Parameter or Argument ... Which is Which?
매개변수 혹은 인수..도대체..거시기가..뭐시기냐??
라는 제목으로
함수에 매개변수를 전달하여야 한다고 하나..인수를 전달한다고 해야 하나
함수의 매개변수에 인수를 전달합니다!!가 맞는 답이다

아래와 같이 theSub이라는 프로시져를 호출하면서 value를 전달한다

theSub(Value)

...

Private Sub theSub(ByVal theValue as Object)

...

End Sub

Is(Value / theValue) an argument or a parameter?
value가 인수냐 매개변수냐..
theValue가 인수냐 매개변수냐..

the procedure defines a parameter,|프로시져가 매개변수를 정의하고
and the calling code passes an argument|프로시져를 부르는 곳에서 인수를 전달한다
to that parameter.| 프로시져가 갖고 있는 매개변수에 전달하는 것이다

You can think of the
parameter as a parking space
and the
argument as an automobile.

매개변수(Parameter)를 주차공간(Parking space)으로 생각하시고
인수(Argument)를 주차공간(Parking Space)에 세우는 자동차(Automobile)로
생각하시면 됩니다

참고로 주차장은 Parking Lot이고
자동차 한대만 세우게 구획이 정해진 공간은 Parking Space이다

That's a great way to remember it! | 참 기억하기 좋은 방법이다
"P" for both "parking space" and "parameter".| "P"는 parameter와 parking space의 P
"A" for "automobile" and "argument".| "A"는 automobile과 argument의 A
So, in the example above, "Value" is an argument, | 그래서 위의 "Value"는 인수(argument)고
"theValue" is a parameter| "theValue"는 매개변수(parameter)이다

생각난 김에 하나더 ..
그런데 매개변수는 프로시져나 함수에서 정의(Define)한 것이라고 했다
그런데 정의 할때 앞에 ByRef라고 하기도 하고 ByVal이라고도 하는데
(VBA에서는 앞에 이것을 안붙이면 ByRef로 간주한다)
뭐가 다른가???
아래의 그림과 같다..



ByVal( By Value)
는 말그대로 변수 SomeValue가 갖고 있는 내용만 전달되기 때문에
theSub프로시져에서 아무리 뚝딱거리고 고쳐도
호출한 쪽의 SomeValue변수상에는 아무 영향이 오지 않는다
ByRef( By Reference)
주차공간이 공동소유인 셈이다
그러니 호출받은 theSub에서 전달받는 값을
뚝딱거려서 고친다면 이 고친내용이 그대로
프로시져를 호출한 곳의 SomeValue변수자체의 내용이
같이 바뀌는 것이다

초보님들은 그냥 별것이것어??!@#하고 넘어갈 일이지만
실은 참으로 중요한 컨셉이니..잘 알고 있고..
잘 활용할줄 알아야 한다
활용은 uno-weekly..주간화일에서 흔하게 볼수 있는 내용일 것이니..
무심코 보려고 하지 마시고
이런 컨셉을 바탕으로 깔고 보시는 것이 좋을 것이다