[ VBA. Cell 선택 ]
1. 정의
- 특정위치의 Cell을 일정범위만큼 선택 한다.
2. 절대위치 선택 - 예문
1. 정의
- Cell의 좌표를 Sheet의 맨 왼쪽 상단꼭지점을 기준으로 위치를 기준으로 시작 좌표가 설정된다.
2. Range("A3:A5").Select
3. 아래 4개의 문장은 모두 동일하게 수행 됨
Range("A1:B2").Select
Range("A1", "B2").Select
Range("A1:A2", "B1:B2").Select
Range("B2", "A1").Select
4. Range("A:C").Select : A~C열 Select
Range("1:10").Select : 1행~10행 Select
4. Cells(5).Select
Cells(5,1).Select
3. 상대위치 선택 - 예문
1. 정의
- Cell의 기본좌표(절대위치)는 Sheet의 맨 왼족 상단 꼭지점이며 (0,0)이 된다.
- 개발을 하다 보면 특정위치(상대위치), 선택되어 있는 위치를 기준(0,0)으로 위치를 이동해야 되는 경우가 있다.
- 이때 '특정위치(상대위치), 선택되어 있는 위치'를 기준(0, 0)으로 다시 X,Y index가 설정 되도록 할 수 있다.
이를 상대위치라 한다.
2. ActiveCell.Range("A3:A5").Select
3. ActiveCell.Offset(1, 3).Range("A1:A4").Select
4. ActiveCell.Offset(-1, -2).Range("A1:A8").Select
5. Range("B3").Range("A2:C4").Select
6. Selection.Offset(1, 0).Select
7. Range("C2:D3").Cells(2).Select
8. Range("C2:D3").Cells(5).Select
2. Range
1. 예문 : Range("A3:A5").Select
- Cell A3 ~ A5 까지 선택한다.
2. 예문 : Cells(5,1).Select
- Cells index 기본 : A1=1, A2=2, A3=3.....
- Cell(행,렬), Cell (X, Y) 좌표가 적용 되어 E1 Cell을 선택 한다.
3. Activecell
1. Activecell - Cell 하나만 Focus위치 시
- Sheet에서 focus가 위치되어 있는 cell의 위치를 기준(0, 0)으로 좌표(cell index)가 설정된다.
- 눈에 보이는 X측(A,B,C..), Y측(1,2,3...)의 좌표가 아니고 focus가 위치 되어 있는 cell을 기준으로
X,Y좌표가 신규로 설정되어 Range()함수가 수행된다.
2. Activecell - Cell 여러개 선택 시
- cell 하나에만 focus가 있는 경우에는 위와 같이 좌표를 (0,0)으로 보면 되는데
여러CELL을 선택 한 상태에서 ActiveCell를 수행하면 이상하게(?)좌표(Y,X)가 설정된다.
사실 이상하게 설정되는게 아니고 Cell을 여러게 설정되어도 자세히 보면 여러Cell중에서
하나의 cell만 Focus가 위치되어 있다.
이 Cell을 기준으로 좌표(Cell Index)가 설정 된다.
3. Offset(Y,X)
1. Range는 좌표가 ("XY:XY")로 되어 있는데 OffSet의 좌표(인자)는 (Y,X)로 되어 있다.
2. ActiveCell를 기준으로 Offset좌표 (Y,X)만큼 이동 후
이동된 좌표가 다시 (0, 0) 이 되고, Range()함수를 수행한다.
3. Offset(1, 3) : ActiveCell을 기준 -> Y : 아래로 1칸, X : 오른쪽으로 3칸 이동하여 기준 좌표가 된다.
4. Offset(-1, -2) : ActiveCell을 기준 -> Y : 위로 1칸, X : 왼족쪽으로 2칸 이동하여 기준 좌표가 된다.
3. Range("XY")
1. Range("B3").Range("A2:C4")
2. 앞쪽 Range의 좌표는 절대위치를 기준으로 시작되고,
뒤쪽 Range의 좌표는 앞쪽 Range에서 선택된 좌표를 기준(0,0)(상대위치)으로 Cell Index가 시작 된다.
3. Selection.Offset(Y,X).Select
1. 예문 : Selection.Offset(1, 0).Select
2. Cell을 하나만 선택하고 있는 경우
- 선택되어 있는 Cell을 기준으로 좌표가 시작(0,0)되고, Offset(Y,X)만큼 이동 후 선택 한다.
3. Cell를 여러개 선택하고 있는 경우
- 선택되어 있는 여러 Cell중에 맨 왼쪽 꼭지점이 좌표의 시작(0,0)이 된다.
이 좌표(0,0)(상대좌표)를 기준으로 Offset(Y,X)좌표만큼 이동 후 선택한다.
** 중요 : 이때 선택이 한 Cell만 되는게 아니고
처음 10개의 Cell를 선택하고 있었다면 이동후에도 10개의 Cell이 선택되어 진다.
3. Range(좌표).Cells(index).Select
1. Cells index 기본 : A1=1, A2=2, A3=3.....
Range설정 후 Cells index
- 선택영역안에서 상대적으로 index가 설정되며
- 만약, 이 영역을 넘어가는 index가 존재 시 아래쪽으로 index가 연속적으로 부여 된다.
(아래 3. 예문 참조)
2. 예문 : Range("C2:D3").Cells(2).Select
- Cells(2) 는 X 좌표 2번째 Cells를 지칭한다.
이때, 앞에 Range가 존재 하면 이 Range에 설정된 기준안에서 index가 새로 설정 된다.
그래서 위 예문의 기준으로 Range("A1:B2")의 영역시 선택되고, 이 선택된 영역을 기준으로
index가 설정되어 Cells(2)가 적용되면 D2 가 선택된다.
3. 예문 : Range("C2:D3").Cells(5).Select
- 이때 Cells의 index는 C2=1, D2=2, C3=3, D3=4 이다. 이때 index 5부터가 이슈다.
index 5부터는 선택된 영역 하단으로 해서 부여 된다.
그래서, C4=5, D4=6, C5=7, D5=8 ... 과 같이 index가 부여 된다.
- 그래서 위 문장은 최종적으로 -> C4가 선택 된다.