Slik merker du celler/områder ved hjelp av Visual Basic-prosedyrer i Excel
Microsoft gir programmeringseksempler kun for illustrasjon, uten garanti hverken uttrykt eller antydet. Dette inkluderer, men er ikke begrenset til, de underforståtte garantiene for salgbarhet eller egnethet for et bestemt formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som blir demonstrert og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsoft kundestøtte-teknikere kan hjelpe til å forklare funksjonaliteten til en bestemt prosedyre, men de vil ikke endre disse eksemplene for å gi ekstra funksjonalitet eller konstruere prosedyrer for å dekke dine spesifikke behov. Eksemplene i denne artikkelen bruker Visual Basic-metodene som er oppført i tabellen nedenfor.
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
Eksemplene i denne artikkelen bruker egenskapene i tabellen nedenfor.
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
Slik merker du en celle i det aktive regnearket
Hvis du vil merke celle D5 i det aktive regnearket, kan du bruke ett av følgende eksempler:
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Slik merker du en celle i et annet regneark i samme arbeidsbok
Hvis du vil merke celle E6 i et annet regneark i samme arbeidsbok, kan du bruke ett av følgende eksempler:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
-or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Du kan også aktivere regnearket og deretter bruke metode 1 ovenfor til å merke cellen:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Slik merker du en celle i et regneark i en annen arbeidsbok
Hvis du vil merke celle F7 i et regneark i en annen arbeidsbok, kan du bruke ett av følgende eksempler:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Du kan også aktivere regnearket og deretter bruke metode 1 ovenfor til å merke cellen:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
Slik merker du et celleområde i det aktive regnearket
Hvis du vil merke området C2:D10 i det aktive regnearket, kan du bruke ett av følgende eksempler:
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
Slik merker du et celleområde i et annet regneark i samme arbeidsbok
Hvis du vil merke området D3:E11 i et annet regneark i samme arbeidsbok, kan du bruke ett av følgende eksempler:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Du kan også aktivere regnearket og deretter bruke metode 4 ovenfor til å merke området:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Slik merker du et celleområde i et regneark i en annen arbeidsbok
Hvis du vil merke området E4:F12 i et regneark i en annen arbeidsbok, kan du bruke ett av følgende eksempler:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Du kan også aktivere regnearket og deretter bruke metode 4 ovenfor til å merke området:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Slik merker du et navngitt område i det aktive regnearket
Hvis du vil merke det navngitte området «Test» i det aktive regnearket, kan du bruke ett av følgende eksempler:
Range("Test").Select
Application.Goto "Test"
Slik merker du et navngitt område i et annet regneark i samme arbeidsbok
Hvis du vil merke det navngitte området «Test» i et annet regneark i samme arbeidsbok, kan du bruke følgende eksempel:
Application.Goto Sheets("Sheet1").Range("Test")
Du kan også aktivere regnearket og deretter bruke metode 7 ovenfor til å velge det navngitte området:
Sheets("Sheet1").Activate
Range("Test").Select
Slik merker du et navngitt område i et regneark i en annen arbeidsbok
Hvis du vil merke det navngitte området «Test» i et regneark i en annen arbeidsbok, kan du bruke følgende eksempel:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Du kan også aktivere regnearket og deretter bruke metode 7 ovenfor til å velge det navngitte området:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Slik merker du en celle i forhold til den aktive cellen
Hvis du vil merke en celle som er fem rader under og fire kolonner til venstre for den aktive cellen, kan du bruke følgende eksempel:
ActiveCell.Offset(5, -4).Select
Hvis du vil merke en celle som er to rader over og tre kolonner til høyre for den aktive cellen, kan du bruke følgende eksempel:
ActiveCell.Offset(-2, 3).Select
Merk
Det oppstår en feil hvis du prøver å merke en celle som er «utenfor regnearket». Det første eksemplet som vises ovenfor, returnerer en feil hvis den aktive cellen er i kolonne A til D, siden flytting av fire kolonner til venstre vil føre den aktive cellen til en ugyldig celleadresse.
Slik merker du en celle i forhold til en annen (ikke den aktive) cellen
Hvis du vil merke en celle som er fem rader under og fire kolonner til høyre for celle C7, kan du bruke ett av følgende eksempler:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Slik merker du et celleområdeforskyvning fra et angitt område
Hvis du vil merke et celleområde som har samme størrelse som det navngitte området Test, men som flyttes fire rader ned og tre kolonner til høyre, kan du bruke følgende eksempel:
ActiveSheet.Range("Test").Offset(4, 3).Select
Hvis det navngitte området er på et annet (ikke det aktive) regnearket, aktiverer du regnearket først, og deretter merker du området ved hjelp av følgende eksempel:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Slik merker du et angitt område og endrer størrelsen på det merkede området
Hvis du vil merke det navngitte området Database og deretter utvide det merkede området med fem rader, kan du bruke følgende eksempel:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Slik merker du et angitt område, forskyver det, og deretter endrer du størrelsen på det
Hvis du vil merke et område fire rader under og tre kolonner til høyre for det navngitte området Database og inkludere to rader og én kolonne mer enn det navngitte området, kan du bruke følgende eksempel:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
Slik velger du unionen av to eller flere angitte områder
Hvis du vil velge unionen (det vil si det kombinerte området) av de to navngitte områdene «Test» og «Eksempel», kan du bruke følgende eksempel:
Application.Union(Range("Test"), Range("Sample")).Select
Merk
at begge områdene må være i samme regneark for at dette eksemplet skal fungere. Vær også oppmerksom på at Union-metoden ikke fungerer på tvers av ark. Denne linjen fungerer for eksempel fint.
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
men denne linjen
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
returnerer feilmeldingen:
Unionmetode for programklassen mislyktes
Slik merker du skjæringspunktet mellom to eller flere angitte områder
Hvis du vil velge skjæringspunktet mellom de to navngitte områdene «Test» og «Eksempel», kan du bruke følgende eksempel:
Application.Intersect(Range("Test"), Range("Sample")).Select
Vær oppmerksom på at begge områdene må være i samme regneark for at dette eksemplet skal fungere.
Eksempler 17–21 i denne artikkelen refererer til følgende eksempelsett med data. Hvert eksempel angir celleområdet i eksempeldataene som vil bli valgt.
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
Slik merker du den siste cellen i en kolonne med sammenhengende data
Hvis du vil merke den siste cellen i en sammenhengende kolonne, bruker du følgende eksempel:
ActiveSheet.Range("a1").End(xlDown).Select
Når denne koden brukes sammen med eksempeltabellen, velges celle A4.
Slik merker du den tomme cellen nederst i en kolonne med sammenhengende data
Hvis du vil merke cellen under et område med sammenhengende celler, bruker du følgende eksempel:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Når denne koden brukes sammen med eksempeltabellen, velges celle A5.
Slik merker du et helt område med sammenhengende celler i en kolonne
Hvis du vil merke et område med sammenhengende celler i en kolonne, bruker du ett av følgende eksempler:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Når denne koden brukes sammen med eksempeltabellen, velges celle A1 til A4.
Slik merker du et helt område med celler som ikke er sammenhengende, i en kolonne
Hvis du vil merke et celleområde som ikke er sammenhengende, bruker du ett av følgende eksempler:
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 denne koden brukes sammen med eksempeltabellen, vil den merke cellene A1 til A6.
Slik merker du et rektangulært celleområde
Hvis du vil merke et rektangulært celleområde rundt en celle, bruker du metoden CurrentRegion. Området som velges av currentregion-metoden, er et område som er avgrenset av en kombinasjon av tomme rader og tomme kolonner. Følgende er et eksempel på hvordan du bruker CurrentRegion-metoden:
ActiveSheet.Range("a1").CurrentRegion.Select
Denne koden vil merke cellene A1 til C4. Andre eksempler for å merke samme celleområde er oppført nedenfor:
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 noen tilfeller vil du kanskje merke cellene A1 til C6. I dette eksemplet fungerer ikke CurrentRegion-metoden på grunn av den tomme linjen i rad 5. Følgende eksempler vil merke alle cellene:
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
Slik merker du flere usammenhengende kolonner med varierende lengde
Hvis du vil velge flere usammenhengende kolonner av varierende lengde, bruker du følgende eksempeltabell og makroeksempel:
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 denne koden brukes sammen med eksempeltabellen, velges cellene A1:A3 og C1:C6.
Notater om eksemplene
ActiveSheet-egenskapen kan vanligvis utelates fordi den er underforstått hvis et bestemt ark ikke har navn. For eksempel i stedet for
ActiveSheet.Range("D5").Select
du kan bruke:
Range("D5").Select
ActiveWorkbook-egenskapen kan også vanligvis utelates. Med mindre en bestemt arbeidsbok er navngitt, er den aktive arbeidsboken underforstått.
Når du bruker Application.Goto-metoden, må du ta med Ark-objektet hver gang hvis du vil bruke to cellemetoder i områdemetoden når det angitte området er i et annet (ikke det aktive) regnearket. For eksempel,
With ActiveWorkbook.Sheets("Sheet1")
Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
End With
For alle elementer i anførselstegn (for eksempel det navngitte området «Test»), kan du også bruke en variabel hvis verdi er en tekststreng. For eksempel i stedet for
ActiveWorkbook.Sheets("Sheet1").Activate
du kan bruke
ActiveWorkbook.Sheets(myVar).Activate
der verdien for myVar er «Ark1».