Excel에서 Visual Basic 프로시저를 사용하여 셀/범위를 선택하는 방법

Microsoft에서 제공하는 프로그래밍 예제는 예시를 위한 것일 뿐이며 이와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다. 이는 상품성이나 특정 목적에 대한 적합성의 묵시적인 보증을 포함하며 이에 제한되지 않습니다. 이 문서에서는 예제에 사용되고 있는 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구를 사용자가 잘 알고 있는 것으로 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다. 이 문서의 예제에서는 다음 표에 나열된 Visual Basic 메서드를 사용합니다.

Method             Arguments
------------------------------------------
Activate           none
Cells              rowIndex, columnIndex
Application.Goto   reference, scroll
Offset             rowOffset, columnOffset
Range              cell1
                   cell1, cell2
Resize             rowSize, columnSize
Select             none
Sheets             index (or sheetName)
Workbooks          index (or bookName)
End                direction
CurrentRegion      none

이 문서의 예제에서는 다음 표의 속성을 사용합니다.

Property         Use
---------------------------------------------------------------------
ActiveSheet      to specify the active sheet
ActiveWorkbook   to specify the active workbook
Columns.Count    to count the number of columns in the specified item
Rows.Count       to count the number of rows in the specified item
Selection        to refer to the currently selected range

활성 워크시트에서 셀을 선택하는 방법

현재 워크시트에서 D5 셀을 선택하려면 다음 예제 중 하나를 사용할 수 있습니다.

ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select

동일한 통합 문서의 다른 워크시트에서 셀을 선택하는 방법

동일한 통합 문서의 다른 워크시트에서 E6 셀을 선택하려면 다음 예제 중 하나를 사용할 수 있습니다.

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

또는 워크시트를 활성화한 다음 위의 메서드 1을 사용하여 셀을 선택할 수 있습니다.

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

다른 통합 문서의 워크시트에서 셀을 선택하는 방법

다른 통합 문서의 워크시트에서 F7 셀을 선택하려면 다음 예제 중 하나를 사용할 수 있습니다.

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

또는 워크시트를 활성화한 다음 위의 메서드 1을 사용하여 셀을 선택할 수 있습니다.

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

현재 워크시트에서 셀 범위를 선택하는 방법

현재 워크시트에서 C2:D10 범위를 선택하려면 다음 예제를 사용할 수 있습니다.

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

or

ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select

or, alternatively, it could be simplified to this:

Range(Cells(2, 3), Cells(10, 4)).Select

동일한 통합 문서의 다른 워크시트에서 셀 범위를 선택하는 방법

동일한 통합 문서의 다른 워크시트에서 D3:E11 범위를 선택하려면 다음 예제 중 하나를 사용할 수 있습니다.

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

또는 워크시트를 활성화한 다음 위의 메서드 4를 사용하여 범위를 선택할 수 있습니다.

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

다른 통합 문서의 워크시트에서 셀 범위를 선택하는 방법

다른 통합 문서의 워크시트에서 E4:F12 범위를 선택하려면 다음 예제 중 하나를 사용할 수 있습니다.

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

또는 워크시트를 활성화한 다음 위의 메서드 4를 사용하여 범위를 선택할 수 있습니다.

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

활성 워크시트에서 명명된 범위를 선택하는 방법

현재 워크시트에서 명명된 범위 "테스트"를 선택하려면 다음 예제 중 하나를 사용할 수 있습니다.

Range("Test").Select
Application.Goto "Test"

동일한 통합 문서의 다른 워크시트에서 명명된 범위를 선택하는 방법

동일한 통합 문서의 다른 워크시트에서 명명된 범위 "테스트"를 선택하려면 다음 예제를 사용할 수 있습니다.

Application.Goto Sheets("Sheet1").Range("Test")

또는 워크시트를 활성화한 다음 위의 메서드 7을 사용하여 명명된 범위를 선택할 수 있습니다.

Sheets("Sheet1").Activate
Range("Test").Select

다른 통합 문서의 워크시트에서 명명된 범위를 선택하는 방법

다른 통합 문서의 워크시트에서 명명된 범위 "테스트"를 선택하려면 다음 예제를 사용할 수 있습니다.

Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

또는 워크시트를 활성화한 다음 위의 메서드 7을 사용하여 명명된 범위를 선택할 수 있습니다.

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

활성 셀에 상대적인 셀을 선택하는 방법

현재 셀의 왼쪽에 5개의 행과 4개의 열이 있는 셀을 선택하려면 다음 예제를 사용할 수 있습니다.

ActiveCell.Offset(5, -4).Select

현재 셀의 오른쪽에 있는 두 개의 행과 세 개의 열이 있는 셀을 선택하려면 다음 예제를 사용할 수 있습니다.

ActiveCell.Offset(-2, 3).Select

참고

"워크시트에서 벗어난" 셀을 선택하려고 하면 오류가 발생합니다. 위에 표시된 첫 번째 예제는 현재 셀이 A-D 열에 있는 경우 오류를 반환합니다. 네 개의 열을 왼쪽으로 이동하면 활성 셀이 잘못된 셀 주소로 이동되므로 오류가 반환됩니다.

다른 셀을 기준으로 셀을 선택하는 방법(활성이 아님) 셀

C7 셀의 오른쪽에 있는 5개의 행과 4개의 열이 있는 셀을 선택하려면 다음 예제 중 하나를 사용할 수 있습니다.

ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

지정한 범위에서 셀 범위 오프셋을 선택하는 방법

명명된 범위 "Test"와 크기가 같지만 4개의 행 아래로 이동되고 오른쪽에 세 개의 열이 이동되는 셀 범위를 선택하려면 다음 예제를 사용할 수 있습니다.

ActiveSheet.Range("Test").Offset(4, 3).Select

명명된 범위가 활성 워크시트가 아닌 다른 워크시트에 있는 경우 먼저 해당 워크시트를 활성화한 다음 다음 예제를 사용하여 범위를 선택합니다.

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

지정한 범위를 선택하고 선택 영역의 크기를 조정하는 방법

명명된 범위 "Database"를 선택한 다음 선택 영역을 5개 행으로 확장하려면 다음 예제를 사용할 수 있습니다.

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

지정된 범위를 선택하고 오프셋한 다음 크기를 조정하는 방법

명명된 범위 "Database"의 오른쪽에 있는 4개 행과 세 개의 열을 선택하고 두 개의 행과 명명된 범위보다 더 많은 하나의 열을 포함하려면 다음 예제를 사용할 수 있습니다.

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

두 개 이상의 지정된 범위의 합합을 선택하는 방법

명명된 두 범위 "Test" 및 "Sample"의 공용 구조체(즉, 결합된 영역)를 선택하려면 다음 예제를 사용할 수 있습니다.

Application.Union(Range("Test"), Range("Sample")).Select

참고

이 예제가 작동하려면 두 범위가 동일한 워크시트에 있어야 합니다. 또한 Union 메서드는 시트 간에 작동하지 않습니다. 예를 들어 이 줄은 정상적으로 작동합니다.

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

하지만 이 줄

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

는 오류 메시지를 반환합니다.

애플리케이션 클래스의 Union 메서드가 실패했습니다.

두 개 이상의 지정된 범위의 교집합을 선택하는 방법

두 개의 명명된 범위 "Test" 및 "Sample"의 교집합을 선택하려면 다음 예제를 사용할 수 있습니다.

Application.Intersect(Range("Test"), Range("Sample")).Select

이 예제가 작동하려면 두 범위가 모두 동일한 워크시트에 있어야 합니다.

이 문서의 예제 17-21은 다음 데이터 샘플 집합을 참조합니다. 각 예제에서는 선택할 샘플 데이터의 셀 범위를 지정합니다.

A1: Name    B1: Sales    C1: Quantity
A2: a       B2: $10      C2: 5
A3: b       B3:          C3: 10
A4: c       B4: $10      C4: 5
A5:         B5:          C5:
A6: Total   B6: $20      C6: 20

연속 데이터 열의 마지막 셀을 선택하는 방법

연속 열에서 마지막 셀을 선택하려면 다음 예제를 사용합니다.

ActiveSheet.Range("a1").End(xlDown).Select

이 코드를 샘플 테이블과 함께 사용하면 셀 A4가 선택됩니다.

연속 데이터 열의 맨 아래에 있는 빈 셀을 선택하는 방법

인접한 셀 범위 아래의 셀을 선택하려면 다음 예제를 사용합니다.

ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select

이 코드를 샘플 테이블과 함께 사용하면 셀 A5가 선택됩니다.

열에서 연속 셀의 전체 범위를 선택하는 방법

열에서 인접한 셀 범위를 선택하려면 다음 예제 중 하나를 사용합니다.

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select

이 코드를 샘플 테이블과 함께 사용하면 A1부터 A4까지의 셀이 선택됩니다.

열에서 인접하지 않은 셀의 전체 범위를 선택하는 방법

인접하지 않은 셀 범위를 선택하려면 다음 예제 중 하나를 사용합니다.

ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
   End(xlUp).Address).Select

이 코드를 샘플 표와 함께 사용하면 A1부터 A6까지의 셀을 선택합니다.

셀의 사각형 범위를 선택하는 방법

셀 주위의 직사각형 셀 범위를 선택하려면 CurrentRegion 메서드를 사용합니다. CurrentRegion 메서드에서 선택한 범위는 빈 행과 빈 열의 조합으로 제한된 영역입니다. 다음은 CurrentRegion 메서드를 사용하는 방법의 예입니다.

ActiveSheet.Range("a1").CurrentRegion.Select

이 코드는 A1부터 C4까지의 셀을 선택합니다. 동일한 범위의 셀을 선택하는 다른 예제는 다음과 같습니다.

ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -or-
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select

경우에 따라 A1부터 C6까지의 셀을 선택할 수 있습니다. 이 예제에서는 행 5의 빈 줄 때문에 CurrentRegion 메서드가 작동하지 않습니다. 다음 예제에서는 모든 셀을 선택합니다.

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    -or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

연속적이지 않은 여러 열의 길이를 선택하는 방법

다양한 길이의 인접하지 않은 여러 열을 선택하려면 다음 샘플 테이블 및 매크로 예제를 사용합니다.

A1: 1  B1: 1  C1: 1  D1: 1
A2: 2  B2: 2  C2: 2  D2: 2
A3: 3  B3: 3  C3: 3  D3: 3
A4:    B4: 4  C4: 4  D4: 4
A5:    B5: 5  C5: 5  D5:
A6:    B6:    C6: 6  D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select

이 코드를 샘플 테이블과 함께 사용하면 A1:A3 및 C1:C6 셀이 선택됩니다.

예제에 대한 참고 사항

특정 시트의 이름이 지정되지 않은 경우 암시적이므로 ActiveSheet 속성은 일반적으로 생략할 수 있습니다. 예를 들어

ActiveSheet.Range("D5").Select

다음을 사용할 수 있습니다.

Range("D5").Select

ActiveWorkbook 속성은 일반적으로 생략할 수도 있습니다. 특정 통합 문서의 이름을 지정하지 않으면 활성 통합 문서가 암시됩니다.

Application.Goto 메서드를 사용하는 경우 지정된 범위가 다른 워크시트에 있을 때 Range 메서드 내에서 두 개의 Cells 메서드를 사용하려는 경우 매번 Sheets 개체를 포함해야 합니다. 예시:

    With ActiveWorkbook.Sheets("Sheet1")
        Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
    End With

따옴표로 된 항목(예: 명명된 범위 "Test")의 경우 값이 텍스트 문자열인 변수를 사용할 수도 있습니다. 예를 들어

ActiveWorkbook.Sheets("Sheet1").Activate

사용할 수 있습니다.

ActiveWorkbook.Sheets(myVar).Activate

여기서 myVar 값은 "Sheet1"입니다.