Så här väljer du celler/områden med hjälp av Visual Basic-procedurer i Excel

Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportexperter kan hjälpa till att förklara funktionerna i en viss procedur, men de kommer inte att ändra dessa exempel för att tillhandahålla extra funktioner eller konstruera procedurer för att uppfylla dina specifika behov. Exemplen i den här artikeln använder Visual Basic-metoderna som anges i följande tabell.

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

Exemplen i den här artikeln använder egenskaperna i följande tabell.

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

Så här väljer du en cell i det aktiva kalkylbladet

Om du vill välja cell D5 i det aktiva kalkylbladet kan du använda något av följande exempel:

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

Så här väljer du en cell i ett annat kalkylblad i samma arbetsbok

Om du vill markera cell E6 i ett annat kalkylblad i samma arbetsbok kan du använda något av följande exempel:

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

Eller så kan du aktivera kalkylbladet och sedan använda metod 1 ovan för att markera cellen:

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

Så här väljer du en cell i ett kalkylblad i en annan arbetsbok

Om du vill markera cell F7 i ett kalkylblad i en annan arbetsbok kan du använda något av följande exempel:

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

Eller så kan du aktivera kalkylbladet och sedan använda metod 1 ovan för att markera cellen:

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

Så här väljer du ett cellområde i det aktiva kalkylbladet

Om du vill välja intervallet C2:D10 i det aktiva kalkylbladet kan du använda något av följande exempel:

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

Så här markerar du ett cellområde i ett annat kalkylblad i samma arbetsbok

Om du vill välja intervallet D3:E11 i ett annat kalkylblad i samma arbetsbok kan du använda något av följande exempel:

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

Du kan också aktivera kalkylbladet och sedan använda metod 4 ovan för att välja intervallet:

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

Så här väljer du ett cellområde i ett kalkylblad i en annan arbetsbok

Om du vill välja intervallet E4:F12 i ett kalkylblad i en annan arbetsbok kan du använda något av följande exempel:

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

Du kan också aktivera kalkylbladet och sedan använda metod 4 ovan för att välja intervallet:

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

Så här väljer du ett namngivet område i det aktiva kalkylbladet

Om du vill välja det namngivna området "Test" i det aktiva kalkylbladet kan du använda något av följande exempel:

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

Så här väljer du ett namngivet område i ett annat kalkylblad i samma arbetsbok

Om du vill välja det namngivna området "Test" i ett annat kalkylblad i samma arbetsbok kan du använda följande exempel:

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

Du kan också aktivera kalkylbladet och sedan använda metod 7 ovan för att välja det namngivna området:

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

Så här väljer du ett namngivet område i ett kalkylblad i en annan arbetsbok

Om du vill välja det namngivna området "Test" i ett kalkylblad i en annan arbetsbok kan du använda följande exempel:

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

Du kan också aktivera kalkylbladet och sedan använda metod 7 ovan för att välja det namngivna området:

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

Så här väljer du en cell i förhållande till den aktiva cellen

Om du vill markera en cell som är fem rader nedanför och fyra kolumner till vänster om den aktiva cellen kan du använda följande exempel:

ActiveCell.Offset(5, -4).Select

Om du vill markera en cell som är två rader ovanför och tre kolumner till höger om den aktiva cellen kan du använda följande exempel:

ActiveCell.Offset(-2, 3).Select

Obs!

Ett fel uppstår om du försöker markera en cell som är "utanför kalkylbladet". Det första exemplet som visas ovan returnerar ett fel om den aktiva cellen finns i kolumnerna A till D, eftersom en flytt av fyra kolumner till vänster skulle ta den aktiva cellen till en ogiltig celladress.

Så här väljer du en cell i förhållande till en annan cell (inte den aktiva) cellen

Om du vill markera en cell som är fem rader nedanför och fyra kolumner till höger om cell C7 kan du använda något av följande exempel:

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

Så här väljer du ett cellområde som förskjuts från ett angivet område

Om du vill markera ett cellområde med samma storlek som det namngivna området "Test", men som flyttas fyra rader nedåt och tre kolumner till höger, kan du använda följande exempel:

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

Om det namngivna området finns på ett annat (inte aktivt) kalkylblad aktiverar du kalkylbladet först och väljer sedan intervallet med följande exempel:

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

Så här väljer du ett angivet område och ändrar storlek på markeringen

Om du vill välja det namngivna området "Databas" och sedan utöka markeringen med fem rader kan du använda följande exempel:

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

Så här väljer du ett angivet intervall, förskjuter det och ändrar sedan storlek på det

Om du vill välja ett intervall fyra rader nedan och tre kolumner till höger om det namngivna området "Databas" och inkludera två rader och en kolumn mer än det namngivna området, kan du använda följande exempel:

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

Så här väljer du unionen med två eller flera angivna intervall

Om du vill välja union (det vill säga det kombinerade området) för de två namngivna intervallen "Test" och "Sample" kan du använda följande exempel:

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

Obs!

att båda intervallen måste finnas i samma kalkylblad för att det här exemplet ska fungera. Observera också att unionsmetoden inte fungerar mellan blad. Den här raden fungerar till exempel bra.

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

men den här raden

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

returnerar felmeddelandet:

Unionsmetod för programklass misslyckades

Så här väljer du skärningspunkten mellan två eller fler angivna intervall

Om du vill välja skärningspunkten mellan de två namngivna intervallen "Test" och "Sample" kan du använda följande exempel:

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

Observera att båda intervallen måste finnas i samma kalkylblad för att det här exemplet ska fungera.

Exempel 17–21 i den här artikeln refererar till följande exempeluppsättning med data. Varje exempel anger cellområdet i de exempeldata som skulle väljas.

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

Så här väljer du den sista cellen i en kolumn med sammanhängande data

Om du vill markera den sista cellen i en sammanhängande kolumn använder du följande exempel:

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

När den här koden används med exempeltabellen väljs cell A4.

Så här väljer du den tomma cellen längst ned i en kolumn med sammanhängande data

Om du vill markera cellen under ett område med sammanhängande celler använder du följande exempel:

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

När den här koden används med exempeltabellen väljs cell A5.

Så här väljer du ett helt område med sammanhängande celler i en kolumn

Om du vill markera ett område med sammanhängande celler i en kolumn använder du något av följande exempel:

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

När den här koden används med exempeltabellen markeras cellerna A1 till A4.

Så här väljer du ett helt område med icke-sammanhängande celler i en kolumn

Om du vill markera ett område med celler som inte är sammanhängande använder du något av följande exempel:

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

När den här koden används med exempeltabellen markeras cellerna A1 till och med A6.

Så här väljer du ett rektangulärt cellområde

Om du vill välja ett rektangulärt cellområde runt en cell använder du metoden CurrentRegion. Det intervall som valts med metoden CurrentRegion är ett område som avgränsas av valfri kombination av tomma rader och tomma kolumner. Följande är ett exempel på hur du använder metoden CurrentRegion:

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

Den här koden markerar cellerna A1 till C4. Andra exempel för att välja samma cellområde visas nedan:

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

I vissa fall kanske du vill markera cellerna A1 till och med C6. I det här exemplet fungerar inte metoden CurrentRegion på grund av den tomma raden på rad 5. I följande exempel markeras alla celler:

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

Så här väljer du flera icke-sammanhängande kolumner med varierande längd

Om du vill välja flera icke-sammanhängande kolumner med varierande längd använder du följande exempeltabell och makroexempel:

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

När den här koden används med exempeltabellen väljs cellerna A1:A3 och C1:C6.

Anteckningar om exemplen

Egenskapen ActiveSheet kan vanligtvis utelämnas eftersom den är underförstådd om ett visst blad inte namnges. I stället för att till exempel

ActiveSheet.Range("D5").Select

du kan använda:

Range("D5").Select

Egenskapen ActiveWorkbook kan också utelämnas vanligtvis. Om inte en specifik arbetsbok namnges är den aktiva arbetsboken underförstådd.

Om du vill använda två cellmetoder i range-metoden när det angivna intervallet finns på ett annat (inte aktivt) kalkylblad, måste du inkludera kalkylbladsobjektet varje gång när du använder metoden Application.Goto. Till exempel:

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

För alla objekt inom citattecken (till exempel det namngivna området "Test") kan du också använda en variabel vars värde är en textsträng. I stället för att till exempel

ActiveWorkbook.Sheets("Sheet1").Activate

du kan använda

ActiveWorkbook.Sheets(myVar).Activate

där värdet för myVar är "Sheet1".