VBA OFFSET

Excel VBA OFFSET-funktion

VBA Offset- funktionen används för att flytta eller hänvisa till en referens som hoppar över ett visst antal rader och kolumner, argumenten för denna funktion i VBA är desamma som för argumenten i kalkylbladet.

Antag till exempel att du har en uppsättning data som nedan.

Nu från cell A1 vill du flytta ner fyra celler och du vill välja den 5: e cellen, dvs. A5-cellen.

På samma sätt, om du vill flytta ner från A1-cell 2-rader och gå 2 kolumner till höger och markera den cellen, dvs. C2-cellen.

I dessa fall är OFFSET-funktionen mycket hjälpsam. Speciellt i VBA OFFSET är funktionen bara fenomenal.

OFFSET används med Range Object i Excel VBA

I VBA kan vi inte direkt skriva in ordet OFFSET. Vi måste använda VBA RANGE-objektet först och från det intervallobjektet kan vi använda OFFSET-egenskapen.

I excel-intervallet är inget annat än en cell eller ett cellintervall. Eftersom OFFSET hänvisar till celler måste vi använda objektet RANGE först och sedan kan vi använda OFFSET-metoden.

Syntax för OFFSET i VBA Excel

  • Radförskjutning: Hur många rader du vill kompensera från den valda cellen. Här är vald cell A1, dvs. Range (“A1”).
  • Kolumnoffset: Hur många kolumner du vill kompensera från den valda cellen. Här är den valda cellen A1, dvs. Range (“A1”).

Exempel

Du kan ladda ner denna VBA OFFSET-mall här - VBA OFFSET-mall

Exempel nr 1

Tänk på nedanstående data, till exempel demonstration.

Nu vill jag välja cellen A6 från cellen A1. Starta makro- och referenscellen med Range-objektet.

Koda:

 Sub Offset_Example1 () Range ("A1") offset (End Sub 

Nu vill jag välja cellen A6 dvs jag vill göra ner 5 celler. Så skriv 5 som parameter för radförskjutning.

Koda:

 Sub Offset_Example1 () Range ("A1") offset (5 End Sub 

Eftersom jag väljer i samma kolumn utelämnar jag kolumndelen. Stäng fästet och sätt en punkt (.) Och skriv metoden "Välj".

Koda:

 Sub Offset_Example1 () Range ("A1") Offset (5). Välj End Sub 

Kör nu den här koden med F5-tangenten eller så kan du köra manuellt för att välja cellen A6 enligt bilden nedan.

Produktion:

Exempel 2

Ta nu samma data men här kommer du att se hur du använder kolumnoffset-argument också. Nu vill jag välja cellen C5.

Eftersom jag först vill välja cellen C5 vill jag flytta ner 4 celler och ta höger två kolumner för att nå cellen C5. Nedanstående kod skulle göra jobbet för mig.

Koda:

 Sub Offset_Example2 () Range ("A1") Offset (4, 2). Välj End Sub 

Jag kör den här koden manuellt eller använder F5-tangenten, då kommer den att välja cellen C5 som visas på skärmbilden nedan.

Produktion:

Exempel # 3

Vi har sett hur man kompenserar rader och kolumner. Vi kan också välja ovanstående celler från de angivna cellerna. Om du till exempel befinner dig i cellen A10 och vill välja A1-cellen, hur väljer du det?

Om vi ​​flyttar ner i cellen kan vi ange ett positivt tal, så här om vi flyttar upp måste vi ange negativa siffror.

Från A9-cellen måste vi flytta upp med 8 rader, dvs. -8.

Koda:

 Sub Offset_Example1 () Range ("A9") Offset (-8). Välj End Sub 

Om du kör den här koden med F5-tangenten eller om du kan köra den här koden manuellt kommer den att välja cellen A1 från A9-cellen.

Produktion:

Exempel # 4

Antag att du befinner dig i cellen C8. Från den här cellen vill du välja cellen A10.

Från den aktiva cellen, dvs. C8-cellen, måste vi först flytta ner två rader och vi måste flytta till vänster med två kolumner för att välja cell A10.

Om du flyttar åt vänster för att välja kolumnen måste vi ange att antalet är negativt. Så här måste vi komma tillbaka med -2 ​​kolumner.

Koda:

 Sub Offset_Example2 () Range ("C8") Offset (2, -2). Välj End Sub 

Kör nu den här koden med F5-tangenten eller kör manuellt, den väljer A10-cellen som visas nedan:

Produktion:

Saker att komma ihåg

  • Om vi ​​flyttar upp rader måste vi ange antalet i negativ.
  • Om du flyttar åt vänster för att välja kolumnen ska numret vara negativt.
  • A1-cellen är den första raden och den första kolumnen.
  • Aktiv cell betyder för närvarande utvalda celler.
  • Om du vill välja cellen med OFFSET behöver du nämna ".Välj".
  • Om du vill kopiera cellen med OFFSET behöver du nämna ".Copy".