Du arbetar offline, väntar på att återansluta till Internet

Markera celler/områden med hjälp av Visual Basic-procedurer i Excel

Supporten för Office 2003 har upphört

Microsoft upphörde med supporten för Office 2003 den 8 april 2014. Denna ändring påverkar dina programuppdateringar och säkerhetsalternativ. Läs om vad detta innebär för dig och hur du behåller skyddet.

Mer Information
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 supporttekniker kan hjälpa till med att förklara funktionen hos en viss procedur, men kan inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov. I exemplen i den här artikeln används Visual Basic-metoderna från följande tabell.
   Metod             Argument   ------------------------------------------   Activate           inget   Cells              rowIndex, columnIndex   Application.Goto   reference, scroll   Offset             rowOffset, columnOffset   Range              cell1                      cell1, cell2   Resize             rowSize, columnSize   Select             inget   Sheets             index (eller sheetName)   Workbooks          index (eller bookName)   End                direction   CurrentRegion      inget				
I exemplen i den här artikeln används egenskaperna i följande tabell.
   Egenskap         Används   ---------------------------------------------------------------------   ActiveSheet      för att ange det aktiva bladet   ActiveWorkbook   för att ange den aktiva arbetsboken   Columns.Count    för att räkna antalet kolumner i det angivna objektet   Rows.Count       för att räkna antalet rader i det angivna objektet   Selection        för att referera till det markerade området				

1: Markera en cell i det aktiva kalkylbladet

Om du vill markera cell D5 i det aktiva kalkylbladet kan du använda något av följande exempel:
ActiveSheet.Cells(5, 4).Select				
eller
ActiveSheet.Range("D5").Select				

2: Markera 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)				
   eller				
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))				
Du kan även aktivera kalkylbladet och sedan använda metod 1 ovan för att markera cellen:
Sheets("Sheet2").ActivateActiveSheet.Cells(6, 5).Select				

3: Markera 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)				
eller
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")				
Du kan även aktivera kalkylbladet och sedan använda metod 1 ovan för att markera cellen:
Workbooks("BOOK2.XLS").Sheets("Sheet1").ActivateActiveSheet.Cells(7, 6).Select				

4: Markera ett cellområde i det aktiva kalkylbladet

Om du vill markera området 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				

5: Markera ett cellområde i ett annat kalkylblad i samma arbetsbok

Om du vill markera cellområdet 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 även aktivera kalkylbladet och sedan använda metod 4 ovan för att markera området:
Sheets("Sheet3").ActivateActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select				

6: Markera ett cellområde i ett kalkylblad i en annan arbetsbok

Om du vill markera området 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 även aktivera kalkylbladet och sedan använda metod 4 ovan för att markera området:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select				

7: Markera ett namngivet område i det aktiva kalkylbladet

Om du vill markera 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"				

8: Markera ett namngivet område i ett annat kalkylblad i samma arbetsbok

Om du vill markera 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 även aktivera kalkylbladet och sedan använda metod 7 ovan för att markera det namngivna området:
Sheets("Sheet1").ActivateRange("Test").Select				

9: Markera ett namngivet område i ett kalkylblad i en annan arbetsbok

Om du vill markera 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 även aktivera kalkylbladet och sedan använda metod 7 ovan för att markera det namngivna området:
Workbooks("BOOK2.XLS").Sheets("Sheet2").ActivateRange("Test").Select				

10: Markera 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! Om du försöker markera en cell som är "utanför kalkylbladet" visas ett felmeddelande. Det första exemplet ovan ger upphov till ett felmeddelande om den aktiva cellen finns i kolumn A till och med D, eftersom en förflyttning fyra kolumner till vänster gör att den aktiva cellen kommer att finnas på en ogiltig celladress.

11: Markera en cell i förhållande till en annan cell än 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				

12: Markera ett cellområde som är förskjutet från ett angivet område

Om du vill markera ett cellområde som är lika stort som det namngivna området "Test", men som är förskjutet 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 i ett annat kalkylblad än det aktiva aktiverar du detta andra kalkylblad först, och markerar sedan området med hjälp av följande exempel:
Sheets("Sheet3").ActivateActiveSheet.Range("Test").Offset(4, 3).Select				

13: Markera ett angivet område och ändra markeringens storlek

Om du vill markera det namngivna området "Database" och sedan utöka markeringen med fem rader kan du använda följande exempel:
Range("Database").SelectSelection.Resize(Selection.Rows.Count + 5, _   Selection.Columns.Count).Select				

14: Markera ett angivet område, förskjuta det och sedan ändra områdets storlek

Om du vill markera ett område fyra rader nedanför och tre kolumner till höger om det namngivna området "Database", samt inkludera två rader och en kolumn mer än det namngivna området, kan du använda följande exempel:
Range("Database").SelectSelection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _   Selection.Columns.Count + 1).Select				

15: Markera unionen av två eller flera angivna områden

Om du vill markera unionen (det vill säga den sammanslagna ytan) av de två namngivna områdena "Test" och "Sample" kan du använda följande exempel:
Application.Union(Range("Test"), Range("Sample")).Select				
Observera att båda områdena måste finnas i samma kalkylblad för att det här exemplet ska fungera. Observera även att Union-metoden inte fungerar mellan olika blad. Raden
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))				
fungerar till exempel bra, men
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))				
ger upphov till följande felmeddelande:
Union method of application class failed

16: Markera snittet av två eller flera angivna områden

Om du vill markera snittet av de två namngivna områdena "Test" och "Sample" kan du använda följande exempel:
Application.Intersect(Range("Test"), Range("Sample")).Select				
Observera att båda områdena måste finnas i samma kalkylblad för att det här exemplet ska fungera.



I exempel 17–21 i den här artikeln hänvisas till följande exempeldata. I varje exempel anges cellområdet som markeras.
   A1: Namn    B1: Försäljning    C1: Kvantitet   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				

17: Markera den sista cellen i en kolumn med sammanhängande data

Om du vill markera den sista cellen i en sammanhängande kolumn kan du använda följande exempel:
ActiveSheet.Range("a1").End(xlDown).Select				
När den här koden används på exempeltabellen markeras cellen A4.

18: Markera den tomma cellen längst ned i en kolumn med sammanhängande data

Om du vill markera cellen nedanför ett område med sammanhängande celler kan du använda följande exempel:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select				
När den här koden används på exempeltabellen markeras cellen A5.

19: Markera 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 kan du använda följande exempel:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select				
   eller				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _      End(xlDown).Address).Select				
När den här koden används på exempeltabellen markeras cellerna A1 till och med A4.

20: Markera ett helt område med icke sammanhängande celler i en kolumn

Om du vill markera ett område med celler som inte hänger samman kan du använda följande exempel:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select				
   eller				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _   End(xlUp).Address).Select				
När den här koden används på exempeltabellen markeras cellerna A1 till och med A6.

21: Markera ett rektangulärt cellområde

Om du vill markera ett rektangulärt cellområde runt en cell använder du CurrentRegion-metoden. Området som markeras med CurrentRegion-metoden begränsas av en valfri kombination av tomma rader och tomma kolumner. Följande är ett exempel på hur du kan använda CurrentRegion-metoden:
ActiveSheet.Range("a1").CurrentRegion.Select				
Den här koden markerar cellerna A1 till och med C4. Andra exempel på markering av samma cellområde anges nedan:
ActiveSheet.Range("a1", _   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select				
   eller				
ActiveSheet.Range("a1:" & _   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select				
I vissa fall kan du vilja markera cellerna A1 till och med C6. I det här fallet fungerar inte CurrentRegion-metoden på grund av den tomma raden på rad 5. I följande exempel markeras samtliga celler:
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select				
    eller				
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1:" & _   ActiveSheet.Cells(lastRow, lastCol).Address).Select				

22. Markera flera icke sammanhängande kolumner av varierande längd

Om du vill markera flera icke sammanhängande kolumner av varierande längd kan du använda följande tabell- 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 på exempeltabellen markeras cellerna A1:A3 och C1:C6.

ANMÄRKNINGAR OM EXEMPLEN

  • ActiveSheet-egenskapen kan vanligen uteslutas, eftersom den är underförstådd om ett visst blad inte namnges. I stället för
    ActiveSheet.Range("D5").Select						
    kan du till exempel använda följande:
    Range("D5").Select						
  • ActiveWorkbook-egenskapen kan vanligen också uteslutas. Om inte en viss arbetsbok namnges underförstås den aktiva arbetsboken.
  • När du använder Application.Goto-metoden och vill använda de båda Cells-metoderna inom Range-metoden när det angivna området finns i ett annat kalkylblad än det aktiva, måste du inkludera Sheets-objektet varje gång. Ett exempel:
    Application.Goto Sheets("Sheet1").Range( _      Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _      Sheets("Sheet1").Cells(4, 5)))					
  • För alla objekt inom citattecken (till exempel det namngivna området "Test") kan du även använda en variabel vars värde är en textsträng. I stället för
    ActiveWorkbook.Sheets("Sheet1").Activate						
    kan du till exempel använda följande
    ActiveWorkbook.Sheets(myVar).Activate						
    där värdet av myVar är "Sheet1".
Referenser

Om du vill veta mer om hur du använder exempelkoden i den här artikeln klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
290140 Köra exempelkod för Office XP-program från artiklar i Knowledge Base
OfficeKBHowTo howto contiguous how to discontiguous non-contiguous nonadjacent non-adjacent  XL2003 XL2007 XL2010
Obs! Det här är en "FAST PUBLISH”-artikel som skapats direkt inom Microsofts supportorganisation. Informationen i artikeln tillhandahålls i befintligt skick för att besvara framtida frågor. På grund av den snabba framtagningen kan materialet innehålla typografiska fel och kan utan förvarning när som helst komma att omarbetas. Se användarvillkoren för andra hänsynstaganden.
Egenskaper

Artikel-id: 291308 – senaste granskning 03/09/2014 01:19:00 – revision: 2.0

Microsoft Office Excel 2003, Microsoft Office Excel 2007, Microsoft Excel 2010

  • kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
Feedback