오늘 끝나면
Range와 Cells
- ✓Range와 Cells의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 Range와이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
셀을 코드로 읽고 쓰기 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
엑셀 VBA · 04
Range와
Cells
손으로 클릭하던 셀을 코드로 가리킨다.
Range("A1") 과 Cells(2,3), 가리키는 길은 두 가지다.
.Value 하나로 값을 읽고 또 쓴다.
셀을 코드로 가리킨다
엑셀에서 셀 하나를 고치려면 마우스로 클릭하고 타이핑한다. VBA는 그 “어느 칸”을 코드로 가리킨다.
가리키는 방법은 두 가지다.
Range("A1") 은 엑셀 주소를 그대로 적는 길이다.
Cells(1, 1) 은 행 번호와 열 번호로 적는 길이다.
둘 다 같은 칸 A1 을 가리킨다.
셀을 가리켰으면 끝에 .Value 를 붙여 값을 다룬다.
Range("A1").Value는 “A1 칸의 값” 이라는 뜻이다.
이제 셀이 마우스가 아니라 코드로 움직인다.
A1 칸을 클릭하고 10 을 타이핑한 뒤 엔터를 친다
Range("A1").Value = 10
Range vs Cells, 같은 칸 다른 표기
헷갈리는 건 딱 하나다. Cells 는 (행, 열) 순서다. 가로세로가 거꾸로가 아니다.
Range 는 사람이 보는 주소 "C2" 를 따옴표 안에 적는다.
Cells 는 숫자 두 개로 적는다. 먼저 행, 그다음 열이다.
그래서 C2 는 2행 3열, 즉 Cells(2, 3) 이다.
주소를 알 때는 Range("C2") 가 읽기 편하다.
행과 열을 숫자로 굴려야 할 때는 Cells(i, j) 가 강하다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | ||||
| 2 | C2 | |||
| 3 | ||||
| 4 |
행이 먼저, 열이 나중. C2 는 2행 3열이다
.Value로 읽고 쓴다
핵심은 .Value 가 = 의 어느 쪽에 있느냐다.
x = Range("A1").Value 는 A1 값을 읽어서 가져온다.
Range("A1").Value = 10 은 A1 에 10 을 쓴다.
왼쪽이면 쓰기, 오른쪽이면 읽기다. 같은 .Value 인데 위치로 방향이 갈린다.
Cells(2, 3).Value = "납품" 처럼 문자열도 된다. 따옴표로 감싸면 글자다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 12 | 매출 | ||
| 2 | ||||
| 3 | ||||
| 4 |
한 줄 적고 실행을 눌러 본다.
범위를 한 번에 다룬다
Range 는 한 칸뿐 아니라 범위도 가리킨다. Range("A1:A3") 처럼 콜론으로 묶는다.
묶은 범위에는 통째로 같은 값을 쓸 수 있다.
Range("A1:C1").Value = 0 한 줄로 세 칸이 다 0 이 된다.
색을 칠하거나(.Interior.Color) 지우는(.ClearContents) 것도 범위째 한 번에 된다.
한 칸씩 도는 건 Cells(i, j) 의 i, j 를 숫자로 바꿔 가며 반복할 때 한다.
이 숫자 주소가 반복문과 만나면 표 전체를 코드로 훑게 된다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 0 | 0 | 0 | |
| 2 | ||||
| 3 |
콜론(:)으로 묶으면 여러 칸이 한 덩어리가 된다
시트를 지정한다
그냥 Range("A1")만 적으면 “지금 보고 있는 시트” 의 A1 이다. 위험할 때가 있다.
엉뚱한 시트가 활성화돼 있으면 엉뚱한 칸에 쓴다.
그래서 앞에 시트를 박아 준다. Worksheets("Sheet1").Range("A1").Value = 10 이다.
이러면 어느 시트가 화면에 떠 있든 정확히 그 시트의 A1 에 쓴다.
정리하면 셀 주소는 시트, 셀, 값 순으로 점을 찍어 좁혀 간다.
Worksheets("Sheet1").Cells(2, 3).Value 처럼 적는다.
코드가 늘어날수록 이 시트 지정 한 줄이 사고를 막아 준다.
Q. Cells(2, 3) 이 가리키는 셀은? (A2 · C2 · B3 · C3)
정답은 C2 다.Cells 는 (행, 열) 순서라 2행 3열을 가리킨다.
2행은 숫자 2, 3열은 A, B, C 중 세 번째 C다.
그래서 2행 3열은 C2, 곧 Range("C2") 다.
Worksheets("Sheet1").Cells(2,3).Value = 10
점(.)으로 이어 붙여 정확히 한 칸을 찍는다