2016년 10월 29일 토요일

VBA #1 변수(Variable)와 셀 주소 지정하기

VBA #1 변수(Variable)와 셀 주소 지정하기


1. 변수 선언


변수 선언은 메모리 위에 주소와 공간을 할당해 계산의 대상이 되는 실체를 만든다.

변수의 종류로는

정수(integer, Long), 소수점(Double), 날짜/시간(Date), 문자열(String), Range(셀의 집합), Variant(형이 없는 변수) 등이 있다.

1) 숫자형 변수(Integer, Long, Double)

Integer는 -32,768 부터 32,767 까지의 범위를 갖는 2바이트(16비트) 숫자를 저장한다.

Long은 -2,147,483,648 ~ +2,147,483,648 까지의 범위를 갖는 4바이트(32비트) 숫자이다.

Double은 8바이트 숫자이다.

즉 숫자 형태의 변수를 사용할 때는 위 세가지 변수를 사용한다.

나는 어떤 반복 변수를 설정할 때는 integer를 많이 사용한다. 32000번 이상 반복하는 경우는 흔하지 않기 때문이다.

하지만, 보다 큰 정수의 숫자변수를 설정할 때는 Double을 사용하고, 소수점 이하 숫자를 다룰 때는 Double을 사용한다.

정수형 : integer, double
소수점까지 : Double



2) 날짜/시간형 변수

Date변수를 사용한다. 엑셀은 1900-01-01을 기준점 0으로 하여 하루를 1로 다루며, yyyy-mm-dd 순으로 입력한다.


3) 문자열 변수

문자를 다룰 때에는 String 변수를 사용한다.
문자열의 경우 길이가 가변적이지만 데이터 길이에 대해 특별히 신경쓰지 않아도 된다.

4) Range 변수

하나 이상의 셀들의 집합을 표현할 때 사용한다.

특히 Range를 특정 셀에 기준점으로 설정하는 방식은 자주 사용된다.


Sub CKT1()

    Dim a As Range
 
    Set a = ThisWorkbook.Sheets(1).Range("A1")
 
 
    For i = 0 To 10
 
    a.Offset(i, 0) = i+1
 
    Next i
 

End Sub

이는 A1 셀을 기준점으로 삼고,

반복함수와 offset을 활용해서, 한 row씩 내려가면서 그곳에 i + 1을 입력하는 코드이다.

offset함수는 특정 기준점을 기준으로 rows, cols 를 이동시키는 함수이다.

이는 VBA가 아니더라도, 엑셀함수로 많이 사용하는 함수이니 꼭 알아둬야 한다.


5) Variant 변수

Variant 변수는 숫자나 문자 등 형식이 결정되지 않거나 미리 알 수 없는 변수를 정의할 때 사용한다. 이는 데이터가 숫자이든 문자열이든, 배열이든 무엇이라도 알아서 인식하고 처리한다. 즉 어떤 값이든 다룰 수 있는 만능 변수이다.

그렇다면 왜 만능 변수인 Variant를 사용하지 않고, 저렇게 구분해서 사용하는 것일까? 그는 컴퓨터의 자원이 유한하기 때문이다. 같은 결과값을 보인다면 적은 리소스로 빨리 처리하게 하는 것이 코딩의 능력이다.




2. 셀 주소 지정

절대 셀 주소를 지정하는 방법은 두가지가 있다.

보통은 엑셀 디폴트 값은 A1, B2와 같이 알파벳과 숫자의 조합으로 되어 있는데

이를 코드로 표현하면,

1)

Thisworkbook.Sheets("시트명").Range("B2")

하지만 다르게 표현할수도 있는데 바로 Cell 구문을 이용하는 것이다.

그러면


2)
Thisworkbook.sheets("시트명").Cells(2,2)

를 사용하면 된다.

보통은 두번째가 숫자로만 이루어져 있기 때문에, 코딩하기 편하다.

숫자로만 셀 주소를 지정하기 때문에, 상대주소를 지정하기 편하다.



Sub Offsetprac_ckt()

Dim r As Range

Set r = ThisWorkbook.Sheets("prac").Range("b2")

r.Offset(0, 0) = "0,0"
r.Offset(0, 0).Interior.Color = RGB(255, 255, 0)
r.Offset(-1, -1) = "-1,-1"
r.Offset(1, 2) = "1,2"

Set r = ThisWorkbook.Sheets("prac").Range("c5")

r.Offset(0, 0) = "0,0"
r.Offset(0, 0).Interior.Color = RGB(255, 255, 0)
r.Offset(-1, -1) = "-1,-1"
r.Offset(1, 2) = "1,2"


End Sub




상대주소를 코드로 작성하는 방법은


3)

먼저 기준이 되는 셀의 주소를 지정한 다음 .offset(행, 열)을 쓰면 된다.




댓글 없음:

댓글 쓰기