programming ⌨/쉘스크립트 🧶 (한셀 +엑셀)

VBA 기초 문법 및 활용(1)

Kortsec1 2023. 11. 24. 23:07

굉장히 낯설다.. 설렌다..

함수 하나하나 설명하면 쓸데없이 길어질거 같아서 자세한 옵션은 직접 찾아보도록 하자.

 

1. Msg Box 띄우기

output을 확인하기 위해 방법을 찾아보니, 메시지 박스를 띄울 수 있다.

MsgBox(prompt[,buttons][,title][,helpfile,context])

 

MsgBox("hello world!")를 실행해 보면

img_1 MsgBox

뚠! 하고 위와 같이 MsgBox가 나온다.

 

2. 변수 설정하기

Dim <<variable_name>> As <<variable_type>>

참고로 한셀에서는 type을 지정해 주지 않아도 된다.

자동으로 형을 정해준다.

Dim var1, var2
var1 = "hello"
var2 = 7

'var1는 문자형 변수
'var2는 정수형 변수

 

const를 이용하여 고정변수를 선언할 수도 있다.

Const <<constant_name>> As <<constant_type>> = <<constant_value>>

 

3. Input Box 띄우기

사용자의 입력을 받는 box를 띄울 수 있다.

InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])

 

MsgBox함수와 마찬가지이다.

img_2 InputBox

 

4. 조건문

조건문을 통해 흐름을 제어해보자.

If(boolean_expression) Then
   .....
ElseIf (boolean_expression) Then
   .....
Else
   .....
End If

위와 같이 사용하면 된다.

switch또한 가능하다

Select Case expression
   Case expressionlist1
      ....
   Case expressionlist2
      ....
   Case expressionlistn
      ....
   Case Else
      ....
End Select

 

5. 반복문

'for
'Step으로 몇씩 증가할지 정할 수 있다
For counter = start To end [Step stepcount]
   ....
Next
-------------------------------------------
'for each
'배열과 집합의 각 요소별로 실행할때 유용하다
For Each element In Group
   ....
Next
-------------------------------------------
'while
While condition
   ...
Wend
-------------------------------------------
'do while
Do While condition
   ...
Loop
-------------------------------------------
'do until
Do Until condition
   ...
Loop

 

반복문을 중간에 탈출하기 위해 두 가지 구문이 있다.

Exit For 'for문을 탈출
Exit Do 'Do while문을 탈출

 

6. 문자열 함수

아래는 문자열에 관한 다양한 predefined 함수들이다.

Dim str = "hEllo"
InStr(str,"h") '문자h가 가장 먼저 발견되는 위치 / 리턴:1
InStrRev(str,"h") 'InStr과 동일하지만 탐색 순서가 오른쪽에서 왼쪽 / 리턴:1
LCase(str) '문자열을 모두 lowercase로 변환 / 리턴:hello
UCase(str) '문자열을 모두 uppercase로 변환 / 리턴:HELLO
Left(str,2) '가장 왼쪽 부터 2문자를 반환 / 리턴:hE
Right(str,2) '가장 오른쪽 부터 2문자를 반환 / 리턴:lo
Mid(str,2,3) '2번째 문자부터 3개의 문자를 반환 / 리턴:Ell
Ltrim(str) '왼쪽 공백 제거
Rtrim(str) '오른쪽 공백 제거
Trim(str) '양쪽 공백 제거
Len(str) '공백을 포함한 문자열의 길이 반환 / 리턴:5
Replace(str,"El","zz") '문자열 속 El을 zz로 변경 / 리턴:hzzlo
Space(2) '공백 2개 생성
StrComp(str,"hEllo") '문자열 비교 / 리턴:0(참)
String(3,"j") '문자j 3번 반환 / 리턴:jjj
StrReverse(str) '문자를 뒤집어서 반환 / 리턴:ollEh

 

 

7. 배열

Dim arr1 as variant
Dim arr2(2)
Dim arr3
arr3 = Array("apple","banana","orange")

Dim arr4(2,3)
arr4(0,0) = "hihi"
arr4(0,1) = "hello"
...

as variant를 통해 다양한 종류의 값을 넣어줄 수 있습니다.

arr2의 size가 2지만, 0부터 2까지 총 세 값이 들어갈 수 있습니다.

또한, 다차원 배열을 활용할 수 있습니다.(최대 60)

 

사용가능한 built-in 함수는 아래와 같습니다.

Dim arr1 = Array("apple","banana","orange")
Dim arr2(3,2)

LBound(arr1) '배열의 가장 작은 index(항상 0) / 리턴 : 0
UBound(arr1) '배열의 크기 / 리턴 : 3
UBound(arr2,1) '배열의 크기 in first dimension / 리턴 : 3
UBound(arr2,2) '배열의 크기 in second dimension / 리턴 : 2

a = Split("hello $ hi $ what", "$") '문자 $를 기준으로 잘라서 배열 생성
join(arr1) '배열의 값을 이어붙여 하나의 문자열 생성(사잇값 공백 기본)
join(arr2,"%") '사잇값 %로 설정

Filter(arr1,"a") '배열중 문자a가 포함된 값 필터링 / 리턴 : ("apple","banana","orange")
IsArray(arr1) '배열인지 아닌지 판단 / 리턴 : True

 

 

8. 함수

Function Test(Length, Width)
	Test = Length * Width
End Function

함수 이름으로 리턴값을 전달합니다.

img_3 사용자 지정 함수

 

 

'programming ⌨ > 쉘스크립트 🧶 (한셀 +엑셀)' 카테고리의 다른 글

쉘스크립트??  (1) 2023.11.23