Udostępnij za pośrednictwem


Jak wybierać komórki/zakresy przy użyciu procedur języka Visual Basic w programie Excel

Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika. W przykładach w tym artykule użyto metod języka Visual Basic wymienionych w poniższej tabeli.

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

W przykładach w tym artykule użyto właściwości w poniższej tabeli.

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

Jak wybrać komórkę w aktywnym arkuszu

Aby wybrać komórkę D5 w aktywnym arkuszu, możesz użyć jednego z następujących przykładów:

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

Jak wybrać komórkę w innym arkuszu w tym samym skoroszycie

Aby wybrać komórkę E6 w innym arkuszu w tym samym skoroszycie, możesz użyć jednego z następujących przykładów:

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

Możesz też aktywować arkusz, a następnie użyć metody 1 powyżej, aby wybrać komórkę:

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

Jak wybrać komórkę w arkuszu w innym skoroszycie

Aby wybrać komórkę F7 w arkuszu w innym skoroszycie, możesz użyć jednego z następujących przykładów:

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

Możesz też aktywować arkusz, a następnie użyć metody 1 powyżej, aby wybrać komórkę:

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

Jak wybrać zakres komórek w aktywnym arkuszu

Aby wybrać zakres C2:D10 w aktywnym arkuszu, możesz użyć dowolnego z następujących przykładów:

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

Jak wybrać zakres komórek w innym arkuszu w tym samym skoroszycie

Aby wybrać zakres D3:E11 w innym arkuszu w tym samym skoroszycie, możesz użyć jednego z następujących przykładów:

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

Możesz też aktywować arkusz, a następnie użyć metody 4 powyżej, aby wybrać zakres:

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

Jak wybrać zakres komórek w arkuszu w innym skoroszycie

Aby wybrać zakres E4:F12 w arkuszu w innym skoroszycie, możesz użyć jednego z następujących przykładów:

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

Możesz też aktywować arkusz, a następnie użyć metody 4 powyżej, aby wybrać zakres:

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

Jak wybrać nazwany zakres w aktywnym arkuszu

Aby wybrać nazwany zakres "Test" w aktywnym arkuszu, możesz użyć jednego z następujących przykładów:

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

Jak wybrać nazwany zakres w innym arkuszu w tym samym skoroszycie

Aby wybrać nazwany zakres "Test" w innym arkuszu w tym samym skoroszycie, możesz użyć następującego przykładu:

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

Możesz też aktywować arkusz, a następnie użyć metody 7 powyżej, aby wybrać nazwany zakres:

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

Jak wybrać nazwany zakres w arkuszu w innym skoroszycie

Aby wybrać nazwany zakres "Test" w arkuszu w innym skoroszycie, możesz użyć następującego przykładu:

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

Możesz też aktywować arkusz, a następnie użyć metody 7 powyżej, aby wybrać nazwany zakres:

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

Jak wybrać komórkę względną do aktywnej komórki

Aby wybrać komórkę zawierającą pięć wierszy poniżej i cztery kolumny po lewej stronie aktywnej komórki, możesz użyć następującego przykładu:

ActiveCell.Offset(5, -4).Select

Aby wybrać komórkę z dwoma wierszami powyżej i trzema kolumnami po prawej stronie aktywnej komórki, możesz użyć następującego przykładu:

ActiveCell.Offset(-2, 3).Select

Uwaga

Jeśli spróbujesz wybrać komórkę "poza arkuszem", wystąpi błąd. Pierwszy pokazany powyżej przykład zwróci błąd, jeśli aktywna komórka znajduje się w kolumnach od A do D, ponieważ przeniesienie czterech kolumn w lewo spowoduje przeniesienie aktywnej komórki na nieprawidłowy adres komórki.

Jak wybrać komórkę względną do innej (nie aktywnej) komórki

Aby wybrać komórkę zawierającą pięć wierszy poniżej i cztery kolumny po prawej stronie komórki C7, możesz użyć jednego z następujących przykładów:

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

Jak wybrać zakres komórek przesunięty z określonego zakresu

Aby wybrać zakres komórek o tym samym rozmiarze co nazwany zakres "Test", ale przesunięty w dół o cztery wiersze i trzy kolumny w prawo, możesz użyć następującego przykładu:

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

Jeśli nazwany zakres znajduje się w innym arkuszu (nie aktywnym), najpierw aktywuj ten arkusz, a następnie wybierz zakres, korzystając z następującego przykładu:

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

Jak wybrać określony zakres i zmienić rozmiar zaznaczenia

Aby wybrać nazwany zakres "Baza danych", a następnie rozszerzyć zaznaczenie o pięć wierszy, możesz użyć następującego przykładu:

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

Jak wybrać określony zakres, przesuń go, a następnie zmień jego rozmiar

Aby wybrać zakres cztery wiersze poniżej i trzy kolumny po prawej stronie nazwanego zakresu "Baza danych" i uwzględnić dwa wiersze i jedną kolumnę większą niż nazwany zakres, możesz użyć następującego przykładu:

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

Jak wybrać unię dwóch lub większej liczby określonych zakresów

Aby wybrać unię (czyli połączony obszar) dwóch nazwanych zakresów "Test" i "Sample", możesz użyć następującego przykładu:

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

Uwaga

że oba zakresy muszą znajdować się w tym samym arkuszu, aby ten przykład działał. Należy również zauważyć, że metoda Union nie działa w arkuszach. Na przykład ten wiersz działa poprawnie.

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

ale ten wiersz

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

Zwraca komunikat o błędzie:

Metoda Union klasy aplikacji nie powiodła się

Jak wybrać przecięcie co najmniej dwóch określonych zakresów

Aby wybrać przecięcie dwóch nazwanych zakresów "Test" i "Sample", możesz użyć następującego przykładu:

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

Należy pamiętać, że oba zakresy muszą znajdować się w tym samym arkuszu, aby ten przykład działał.

Przykłady 17–21 w tym artykule dotyczą następującego przykładowego zestawu danych. Każdy przykład zawiera zakres komórek w przykładowych danych, które zostaną wybrane.

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

Jak wybrać ostatnią komórkę kolumny ciągłych danych

Aby wybrać ostatnią komórkę w ciągłej kolumnie, użyj następującego przykładu:

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

Gdy ten kod jest używany z przykładową tabelą, zostanie wybrana komórka A4.

Jak wybrać pustą komórkę u dołu kolumny ciągłych danych

Aby wybrać komórkę poniżej zakresu ciągłych komórek, użyj następującego przykładu:

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

Gdy ten kod jest używany z przykładową tabelą, zostanie wybrana komórka A5.

Jak wybrać cały zakres ciągłych komórek w kolumnie

Aby wybrać zakres ciągłych komórek w kolumnie, użyj jednego z następujących przykładów:

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

Gdy ten kod jest używany z przykładową tabelą, zostaną wybrane komórki od A1 do A4.

Jak wybrać cały zakres komórek nieciągłych w kolumnie

Aby wybrać zakres komórek, które nie są ciągłe, użyj jednego z następujących przykładów:

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

Gdy ten kod jest używany z przykładową tabelą, wybiera komórki od A1 do A6.

Jak wybrać prostokątny zakres komórek

Aby wybrać prostokątny zakres komórek wokół komórki, użyj metody CurrentRegion. Zakres wybrany przez metodę CurrentRegion jest obszarem ograniczonym dowolną kombinacją pustych wierszy i pustych kolumn. Poniżej przedstawiono przykład użycia metody CurrentRegion:

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

Ten kod wybierze komórki od A1 do C4. Poniżej przedstawiono inne przykłady wybierania tego samego zakresu komórek:

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

W niektórych przypadkach możesz wybrać komórki od A1 do C6. W tym przykładzie metoda CurrentRegion nie będzie działać z powodu pustego wiersza w wierszu 5. W poniższych przykładach zaznaczone zostaną wszystkie komórki:

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

Jak wybrać wiele nieciągłych kolumn o różnej długości

Aby wybrać wiele nieciągłych kolumn o różnej długości, użyj poniższej przykładowej tabeli i przykładu makra:

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

Gdy ten kod jest używany z przykładową tabelą, zostaną wybrane komórki A1:A3 i C1:C6.

Uwagi dotyczące przykładów

Właściwość ActiveSheet jest zwykle pomijana, ponieważ jest sugerowana, jeśli określony arkusz nie ma nazwy. Na przykład zamiast

ActiveSheet.Range("D5").Select

można użyć:

Range("D5").Select

Zazwyczaj można również pominąć właściwość ActiveWorkbook. Jeśli konkretny skoroszyt nie zostanie nazwany, aktywny skoroszyt zostanie dorozumiany.

Jeśli używasz metody Application.Goto, jeśli chcesz użyć dwóch metod komórek w metodzie Range, gdy określony zakres znajduje się w innym arkuszu (nie aktywnym), musisz za każdym razem dołączyć obiekt Arkusze. Przykład:

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

Dla dowolnego elementu w cudzysłowie (na przykład nazwanego zakresu "Test") można również użyć zmiennej, której wartość jest ciągiem tekstowym. Na przykład zamiast

ActiveWorkbook.Sheets("Sheet1").Activate

można użyć

ActiveWorkbook.Sheets(myVar).Activate

gdzie wartość myVar to "Sheet1".