ActiveCell은 현재 활성화된 셀(선택된셀) 입니다.
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 5).Select
ActiveCell.Offset(1, 5).Select
ActiveCell.Offset(3, 0).Select
ActiveCell.End(2).Select
1)현재 셀을 기준으로
"현재 셀 + 현재 셀과 데이터가 아래 방향으로 연속된 셀의 마지막 셀까지의 범위"를 선택합니다. 단축키의 "Ctrl+Shift+ 아래
방향키"와 같은 기능
Range(ActiveCell, activeCell.End(xlDown)).Select
2)"현재 셀 + 현재 셀의 데이터가 연속된 위쪽 방향의 마지막
셀 범위"를 선택합니다.
단축키의 "Ctrl+Shift+ 위 방향키"와 같은 기능
Range(ActiveCell, activeCell.End(xlUp)).Select
3)"현재 셀 + 현재 셀의 데이터가 연속된 오른쪽 방향의 마지막 셀
범위"를 선택합니다.
Range(ActiveCell, activeCell.End(xlToRight)).Select
4)"현재 셀 + 현재 셀의 데이터가 연속된 왼쪽 방향의
마지막 셀 범위"를 선택합니다.
Range(ActiveCell, activeCell.End(xlToLeft)).Select
5) 현재 셀과 현재 셀의 인접한 셀 범위를 선택합니다. 현재
셀에서 떨어지 영역은 선택할 수 없음.
ActiveCell.CurrentRegion.Select
6) 현재
셀과 시트의 마지막 셀을 범위로 선택합니다.
Range(Range("A1"), activeCell.SpecialCells(xlLastCell)).Select
7) 현재 셀을 기준으로 열 방향으로
데이터가 있는 셀 범위를 선택하는 매크로
" 현재 셀이 빈 셀이면 프로시저를 종료
If IsEmpty(ActiveCell) then Exit Sub
" 에러가 발생해도 계속 코드를 진행시킨다.
On Error Resume Next
"
현재 셀의 바로 위쪽 셀(offset(-1,0))이 빈셀이면 현재 셀을 가장 위에 위치한 셀로 지정한다. 만약 바로 위쪽 셀에 데이터가
있다면 end(xlup)속성으로 가장 위쪽의 셀을 지정한다. 지정한 셀은 변수 TopCell에 참조됨
If isEmpty(ActiveCell.Offset(-1, 0)) Then
Set TopCell = activeCell
Else
Set TopCell = ActiveCell.End(xlUp)
End If
" 현재
셀의 바로 아래쪽 셀이 빈셀이면 현재 셀을 가장 아래 쪽에 있는 셀로 지정한다. 아니면 현재셀의 가장 아래 쪽 셀 end(xldown)를
선택해 지정한다.
"지정한 셀은 변수 BottomCell에 참조됨
If IsEmpty(ActiveCell.Offset(1,
0)) Then
Set BottomCell = ActiveCell
Else
Set BottomCell = activeCell.End(xlDown)
End If
" 변수의 범위를 선택한다.
" 현재 셀을 기준으로 열의
데이터가 있는 셀 범위가 선택됨
Range(TopCell, BottomCell).Select
8) 현재 셀을
기준으로 데이터가 있는 행 방향의 셀 범위를 선택하는 매크로
" 현재 셀이 빈 셀이면 프로시저를 종료
If isEmpty(ActiveCell) Then Exit Sub
" 에러가 발생해도 계속 코드를 진행시킨다
On Error resume Next
" 현재 셀의 왼쪽 셀이 빈 셀이면 현재 셀을 가장 왼쪽 셀로 지정한다.
" 아니면
end(xltoright) 속성으로 가장 왼쪽 셀을 선택하여 변수에 지정한다.
If isEmpty(ActiveCell.Offset(0, -1)) Then
Set LeftCell = activeCell
Else
Set LeftCell = ActiveCell.End(xlToLeft)
End if
" 현재 셀의 오른쪽 셀이 빈 셀이면 현재 셀을 가장 오른쪽 셀로 지정한다.
" 아니면 end(xltoright)
속성으로 가장 오른쪽 셀을 선택하여 변수에 지정한다.
If IsEmpty(ActiveCell.Offset(0, 1)) then
Set RightCell = ActiveCell
Else
Set RightCell = activeCell.End(xlToRight)
End If
" 변수로 지정한 셀 범위를
선택한다.
Range(LeftCell, RightCell).Select
9) 현재 셀의
열(entirecolun)을 선택한다.
Selection.EntireColumn.Select
10) 현재
셀의 행(entirerow)를 선택한다.
Selection.EntireRow.Select
11) 현재 셀을
기준으로 아래 방향의 첫 번째 빈 셀을 선택하는 매크로
" 현재 셀의 아래 셀을 선택한다(활성 셀이
된다)
ActiveCell.Offset(1, 0).Select
" Do while 순환문은 조건이 참(True)인 동안만
순환된다.
" 조건을 현재셀이 빈 셀이 아니면 계속 순환하도록 지정한다.
" 순환문의 내부에 있는 실행문에서 계속 다음의 셀을
선택하도록 하여 현재 셀의 위치를 변경시켜준다.
Do While Not isEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
" 순환문이
종료되었다면 선택된 셀은 빈 셀이다.
12) 현재 셀에서 열 방향으로 빈 셀을 찾는 매크로(오른쪽 방향)
"
11번의 문에서 Offset의 위치만 열 방향으로 변경시켜 준다.
ActiveCell.Offset(0,
1).Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(0,
1).Select
Loop
13) 행에 데이터가 있는 첫번째 셀과 마지막 셀의 범위를 선택하는 매크로
" 현재
셀의 행번호에 열번호를 1로 지정하여 가장 왼쪽 셀로 변수에 참조한다.
" 현재 셀이 어떤 셀이든 항상 A열을
참조하게된다.
Set LeftCell = Cells(ActiveCell.Row, 1)
" 현재 셀의 행번호에 열번호를
256로 지정하여 가장 오른쪽 셀로 변수에 참조한다.
" 현재 셀이 어떤 셀이든 항상 IV열을 참조한다.
Set RightCell
= Cells(ActiveCell.Row, 256)
" 만약 변수가 참조하는 셀이 빈 셀이면 데이터가 있는 가장 왼쪽의 셀이
아니다.
" 따라서 다시 셀을 찾아서 참조한다: end(xltoright)
If IsEmpty(LeftCell) then
Set LeftCell = LeftCell.End(xlToRight)
End If
" 마찬가지로 가장 오른쪽
셀을 참조하는 셀이 빈셀이면 데이터가 있는 가장 오른쪽 셀이 아니다.
" 따라서 다시 셀을 찾아서 참조한다: end(xltoleft)
If IsEmpty(RightCell) Then
Set RightCell = rightCell.End(xlToLeft)
End If
" 가장 왼쪽 셀의 열 번호가 256이면서 가장 오른쪽 셀의 열
번호가 1이면 현재 셀만 데이터가 있는 유일한 셀이된다.
" 그렇지 않다면 변수가 참조하는 셀 범위를 선택한다.
If leftCell.Column = 256 And RightCell.Column = 1 then
ActiveCell.Select
Else
Range(LeftCell, RightCell).Select
End if
14) 열에 데이터가 있는 첫번째 셀과 마지막 셀의 범위를 선택하는 매크로
" 13번의 설명을
참고하세요
" 셀을 선택하는 방향만 틀립니다.
Set TopCell = Cells(1, activeCell.Column)
Set BottomCell = Cells(16384, activeCell.Column)
If IsEmpty(TopCell) Then
Set TopCell = topCell.End(xlDown)
End If
If IsEmpty(BottomCell) Then
Set bottomCell = BottomCell.End(xlUp)
End If
If TopCell.Row = 16384 And bottomCell.Row = 1 Then
ActiveCell.Select
Else
Range(TopCell, bottomCell).Select
End If
'엑셀VBA' 카테고리의 다른 글
엑셀 자동 하이퍼링크 만들기(매크로) (0) | 2011.09.03 |
---|---|
vlookup함수 사용 시 중복값 나타내기 (0) | 2011.07.08 |
입력 받은 셀 주소로 이동하기 (0) | 2011.06.14 |
한 셀내의 문자 정렬 및 중복 제거하기 (0) | 2011.02.13 |
특정 일자와 가장 가까운 날짜값 찾기 (1) | 2011.02.12 |