Offset

I VBA vill du ibland komma till en cell som ligger bredvid, ovanför eller under en specifik cell. Exempelvis vill du göra detta...

  • När du gör en loop där du kopierar celler från många flikar och vill lägga dessa under varandra i en ny flik

Men det kan även vara användbart i många andra fall, se fler exempel nedan

01/ Ställ upp din Offset

Offset skrivs efter den cell som valts och har de två argumenten antal rader och antal kolumner att "offset:a"

Range("A1").Offset(1, 0).Select
 

Du väljer först A1 sedan väljer du att ta en cell som är en rad under och noll kolumner till höger / vänster

Cellen du kommer välja blir således A2

02/ Exempel - Välj cellen under den sista cellen med värde i kolumn A

Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select

               1                                    2                   3                4

  1. Du väljer den sista cellen i kolumn A. I en version efter Excel 2003 blir detta cell A1048576

  2. Detta är samma sätt som att du trycker Ctrl + piltangenten uppåt, du kommer således till den sista cellen med värden i kolumn A

  3. Du "hoppar" en cell ned"

  4. Du "selectar" cellen

03/ Exempel - Lägg värdet i cell A1 i alla celler i en ny flik

Nedan har flera olika moment som jag går igenom på denna hemsida. Hur du sätter en variabel, hur du upprepar kod (loop) och OM (IF). Det nedan gör är att den skapar en ny flik med namn Exempel och lägger värdet i cell A1 från alla andra flikar i den nya fliken under varandra i kolumn A

Sheets.Add(Before:=Sheets(1)).Name = "Exempel"

Dim ws As Worksheet
For Each ws In Worksheets

If ws.Name <> "Exempel" Then

ws.Range("A1").Copy

Worksheets("Exempel").Paste Range("A" & Rows.Count).End(xlUp).Offset(1, 0)

End If

Next ws

Excel med Rickard

Excel med Rickard