[ 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가 선택 된다.

'VBA (기본) > Cell 선택' 카테고리의 다른 글

VBA. Cell 선택 - Addrress  (0) 2017.08.31
VBA. Cell 선택 - End  (0) 2017.08.31
VBA. Cell 선택 - SpecialCells  (0) 2017.08.31
Posted by 농부지기
,