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».