| Grunder | Option Explicit | Tvingar deklaration av variabler; förhindrar att stavfel blir nya variabler. | Option Explicit (överst i modulen) | Kompileringsfel om odeklarerad variabel används |
| Grunder | Sub | Procedur (makro). Utför åtgärder, returnerar inget värde. | Sub Hello(): Debug.Print "Hej": End Sub | Omedelbarfönster: Hej |
| Grunder | Function | Returnerar ett värde; kan användas i formler eller kod. | Function Add(a As Long,b As Long) As Long: Add=a+b: End Function | Add(2,3) → 5 |
| Grunder | Kommentarer | Förklarar koden; ignoreras av VBA. | ' kommentar eller Debug.Print x ' inline | Ingen körningseffekt |
| Grunder | Radbrytning (fortsättning) | Fortsätt en sats på nästa rad. | Debug.Print "A" & _
"B" | AB |
| Grunder | Satsavskiljare | Flera satser på en rad. | Dim x As Long: x=5: Debug.Print x | 5 |
| Variabler | Dim | Deklarerar en variabel (räckvidd beror på var den används). | Dim n As Long | Skapar variabeln n |
| Variabler | Const | Deklarerar en konstant (kan inte ändras). | Const TAX As Double = 0.24 | Oföränderligt värde |
| Variabler | Vanliga typer | Long heltal, Double decimaltal, Currency pengar, String text, Boolean, Date, Variant, Object. | Dim price As Double
Dim name As String | Typen styr lagring/beteende |
| Variabler | Tilldelning (=) | Tilldelar värden till värdetyper. | x = 10
name = "Ana" | x blir 10 |
| Variabler | Set | Tilldelar objektreferenser (krävs för objekt). | Set ws = ThisWorkbook.Worksheets("Sheet1") | ws pekar på Sheet1 |
| Variabler | Nothing | Betyder “ingen objektreferens”. Jämför med Is. | If ws Is Nothing Then Debug.Print "saknas" | saknas om inte satt |
| Operatorer | + | Addition (tal). | Debug.Print 5 + 2 | 7 |
| Operatorer | – | Subtraktion / negation. | Debug.Print 5 - 2 | 3 |
| Operatorer | * | Multiplikation. | Debug.Print 5 * 2 | 10 |
| Operatorer | / | Division (flyttalsresultat). | Debug.Print 5 / 2 | 2.5 |
| Operatorer | \ | Heltalsdivision (slänger resten). | Debug.Print 5 \ 2 | 2 |
| Operatorer | Mod | Rest vid division. | Debug.Print 5 Mod 2 | 1 |
| Operatorer | ^ | Potens (exponent). | Debug.Print 2 ^ 3 | 8 |
| Operatorer | & | Strängsammanfogning (föredras framför +). | Debug.Print "Hej " & "VBA" | Hej VBA |
| Jämförelse | = | Lika med (returnerar Boolean). | Debug.Print (5 = 5) | True |
| Jämförelse | <> | Inte lika med. | Debug.Print (5 <> 4) | True |
| Jämförelse | < | Mindre än. | Debug.Print (3 < 10) | True |
| Jämförelse | > | Större än. | Debug.Print (10 > 3) | True |
| Jämförelse | <= | Mindre än eller lika med. | Debug.Print (3 <= 3) | True |
| Jämförelse | >= | Större än eller lika med. | Debug.Print (3 >= 10) | False |
| Logik | And | Sant om båda sidorna är sanna. | Debug.Print (5>3 And 2<4) | True |
| Logik | Or | Sant om minst en sida är sann. | Debug.Print (5>3 Or 2>4) | True |
| Logik | Not | Vänder True↔False. | Debug.Print Not (5=5) | False |
| Logik | Xor | Sant om exakt en sida är sann. | Debug.Print (True Xor True) | False |
| Logik | Is | Jämför objektidentitet (och Is Nothing). | Debug.Print (ws Is Nothing) | True/False |
| Styrflöde | If…Then | Kör blocket endast om villkoret är True. | If x>10 Then Debug.Print "Stort" | Stort (om x>10) |
| Styrflöde | If…Else | Tvåvägsval. | If x>10 Then Debug.Print "Stort" Else Debug.Print "Litet" | Stort eller Litet |
| Styrflöde | ElseIf | Flerval med flera villkor. | If x>10 Then ... ElseIf x=10 Then ... Else ... End If | En gren körs |
| Styrflöde | Select Case | Rent flerval baserat på ett uttryck. | Select Case x
Case 1: Debug.Print "Ett"
Case 2 To 5: Debug.Print "2–5"
Case Else: Debug.Print "Annat"
End Select | Skriver ut matchande text |
| Styrflöde | GoTo | Hoppar till en etikett (använd mest för felhantering). | GoTo Hoppa
Debug.Print "A"
Hoppa: Debug.Print "B" | Skriver bara B |
| Loopar | For…Next | Räkneloop. | For i=1 To 3: Debug.Print i: Next | 1 2 3 |
| Loopar | Step | Ändrar steglängd i For-loop. | For i=10 To 2 Step -2: Debug.Print i: Next | 10 8 6 4 2 |
| Loopar | For Each | Loopar igenom objekt i en samling (Range, Sheets, osv.). | For Each ws In ThisWorkbook.Worksheets: Debug.Print ws.Name: Next | Skriver ut alla bladnamn |
| Loopar | Do While…Loop | Loopar så länge villkoret är True. | Do While x<3: x=x+1: Loop | x slutar på 3 |
| Loopar | Do Until…Loop | Loopar tills villkoret blir True. | Do Until x=3: x=x+1: Loop | x slutar på 3 |
| Loopar | Exit For / Exit Do | Avslutar loopen direkt. | If i=5 Then Exit For | Loop slutar i förtid |
| Procedurer | Exit Sub / Exit Function | Lämnar proceduren direkt. | If fel Then Exit Sub | Makrot/funktionen avbryts |
| Parametrar | ByRef | Skickar variabeln som referens (standard). Funktionen kan ändra originalet. | Sub Inc(ByRef n As Long): n=n+1: End Sub | n ändras |
| Parametrar | ByVal | Skickar en kopia. Funktionen kan inte ändra originalet. | Sub Inc(ByVal n As Long): n=n+1: End Sub | Uppringaren oförändrad |
| Parametrar | Optional | Parametern kan utelämnas; standardvärde används. | Sub Hälsa(Optional vem As String="Världen") | Hälsa → Hej Världen |
| Parametrar | ParamArray | Tar emot valfritt antal argument (som array). | Function SumAll(ParamArray nums()): ... End Function | SumAll(1,2,3) → 6 |
| Arrayer | Fast array | Storlek bestäms vid deklaration. | Dim a(1 To 3) As Long | Index 1..3 |
| Arrayer | Dynamisk array | Storlek bestäms vid körning med ReDim. | Dim a() As Long: ReDim a(1 To 5) | Index 1..5 |
| Arrayer | ReDim Preserve | Ändrar storlek men behåller värden (bara sista dimensionen kan ändras). | ReDim Preserve a(1 To 10) | Gamla värden behålls |
| Arrayer | LBound/UBound | Ger lägsta/högsta index. | Debug.Print LBound(a), UBound(a) | t.ex. 1 10 |
| Strängar | Len | Strängens längd. | Debug.Print Len("Hello") | 5 |
| Strängar | Left/Right | Tar vänster/höger tecken. | Debug.Print Left("Hello",2) | He |
| Strängar | Mid | Tar delsträng från position. | Debug.Print Mid("Hello",2,3) | ell |
| Strängar | UCase/LCase | Versaler / gemener. | Debug.Print UCase("Hi") | HI |
| Strängar | Trim | Tar bort inledande/avslutande mellanslag. | Debug.Print Trim(" hi ") | hi |
| Strängar | Replace | Ersätter förekomster av deltext. | Debug.Print Replace("a-b","-","_") | a_b |
| Strängar | InStr | Hittar position (0 om ej hittad). | Debug.Print InStr(1,"banana","na") | 3 |
| Strängar | Split/Join | Splittrar text till array / sammanfogar array till text. | parts=Split("a,b,c",",")
Debug.Print Join(parts,"|") | a|b|c |
| Konvertering | CInt/CLng/CDbl | Konvertera till Integer/Long/Double. | Debug.Print CLng(3.9) | Ofta 4 (bankers rounding kan gälla) |
| Konvertering | CStr | Konvertera till String. | Debug.Print CStr(123) | 123 |
| Matte | Int / Fix | Int avrundar nedåt (mot -∞). Fix kapar mot 0. | Debug.Print Int(-3.9)
Debug.Print Fix(-3.9) | -4 och -3 |
| Matte | Round | Avrundar (VBA använder bankers rounding). | Debug.Print Round(2.5,0) | 2 |
| Matte | Abs/Sqr | Absolutvärde / kvadratrot. | Debug.Print Abs(-5)
Debug.Print Sqr(9) | 5, 3 |
| Slump | Randomize/Rnd | Seedar slump / slump-tal 0..1. | Randomize: Debug.Print Rnd | t.ex. 0.4832 |
| Formatering | Format | Formaterar tal/datum till text. | Debug.Print Format(1234.5,"#,##0.00") | 1,234.50 |
| Datum/Tid | Date/Time/Now | Aktuellt datum, tid eller båda. | Debug.Print Date
Debug.Print Time
Debug.Print Now | Beror på nuvarande tidpunkt |
| Datum/Tid | DateAdd | Lägger till ett intervall på datum/tid. | Debug.Print DateAdd("d",7,Date) | Datum + 7 dagar |
| Datum/Tid | DateDiff | Skillnad mellan datum i ett intervall. | Debug.Print DateDiff("d",Date,DateAdd("m",1,Date)) | Dagar tills +1 månad |
| Felhantering | On Error GoTo | Skickar fel till en hanterare (etikett). | On Error GoTo EH
x=1/0
Exit Sub
EH: Debug.Print Err.Number, Err.Description | 11 Division med noll |
| Felhantering | On Error Resume Next | Ignorerar körfel och fortsätter (använd försiktigt). | On Error Resume Next
Kill "C:\nope.txt"
On Error GoTo 0 | Ingen krasch; kontrollera Err |
| Felhantering | On Error GoTo 0 | Stänger av aktuell felhanterare. | On Error GoTo 0 | Normal felhantering igen |
| Felsökning | Debug.Print | Skriver till Omedelbarfönstret (Ctrl+G). | Debug.Print "x=", x | Visar värde |
| Felsökning | Debug.Assert | Stoppar i debug om villkoret är False. | Debug.Assert x > 0 | Stoppar om x ≤ 0 (i debug) |
| Felsökning | Stop | Tvingar en paus (som en breakpoint). | Stop | Körning pausar |
| Excel | ThisWorkbook | Arbetsboken som innehåller VBA-projektet. | Set wb = ThisWorkbook | Stabil referens |
| Excel | ActiveWorkbook | Arbetsboken som är aktiv just nu (kan ändras oväntat). | Set wb = ActiveWorkbook | Beror på fokus |
| Excel | Worksheet | Ett bladobjekt. | Set ws = wb.Worksheets("Sheet1") | ws.Name → Sheet1 |
| Excel | Range | En cell eller ett cellområde. | ws.Range("A1").Value = "Hej" | A1 blir “Hej” |
| Excel | Cells | Rad/kolumn-indexering till en cell. | ws.Cells(1,2).Value = 10 | B1 blir 10 |
| Excel | ClearContents | Tar bort värden/formler men behåller formatering. | ws.Range("A1:B2").ClearContents | Celler töms |
| Excel | Clear | Tar bort värden + formatering. | ws.Range("A1:B2").Clear | Celler återställs |
| Excel | Copy/PasteSpecial | Kopiera och klistra in med kontroll (värden, format, etc.). | ws.Range("A1").Copy
ws.Range("B1").PasteSpecial xlPasteValues | B1 får endast värdet |
| Excel | AutoFit | Autojusterar kolumner/rader. | ws.Columns("A").AutoFit | Kolumn A passar innehåll |
| Excel | Sista raden | Hittar sista använda raden i en kolumn. | lastRow = ws.Cells(ws.Rows.Count,"A").End(xlUp).Row | t.ex. 128 |
| Excel | CurrentRegion | Sammanhängande block runt en cell (som Ctrl+A-region). | Set r = ws.Range("A1").CurrentRegion | Utökar till datablock |
| Excel | UsedRange | Alla celler Excel tycker är använda (kan vara “smutsigt”). | Set r = ws.UsedRange | Täcker “använt” område |
| Prestanda | ScreenUpdating | Stäng av skärmuppdatering för snabbare körning. | Application.ScreenUpdating = False | Snabbare makron |
| Prestanda | EnableEvents | Stäng av händelser för att undvika återtriggning. | Application.EnableEvents = False | Undviker event-loopar |
| Prestanda | Calculation | Manuell beräkning för fart; återställ efteråt. | Application.Calculation = xlCalculationManual | Stoppar autoberäkning |
| UI | MsgBox | Visar en meddelanderuta. | MsgBox "Klart!", vbInformation, "Status" | Användaren ser dialog |
| UI | InputBox | Ber användaren om textinmatning. | name = InputBox("Ditt namn?") | Returnerar användarens text |
| Filer | Dir | Snabb kontroll om fil finns (tom sträng om saknas). | If Dir(p)<>"" Then Debug.Print "Finns" | Finns / inget |
| Filer | FreeFile | Hämtar ett ledigt filnummer för Open. | f = FreeFile | t.ex. 1 |
| Filer | Open/Print#/Close | Skriver en enkel textfil. | f=FreeFile
Open "C:\Temp\log.txt" For Output As #f
Print #f, "Hej"
Close #f | Filen innehåller “Hej” |
| Samlingar | Collection | Enkel listbehållare (1-baserad indexering). | Dim col As New Collection
col.Add "A": Debug.Print col(1) | A |
| Samlingar | Dictionary | Nyckel/värde-lager (late bound). | Set d=CreateObject("Scripting.Dictionary")
d.Add "cat",3
Debug.Print d("cat") | 3 |
| Händelser | Workbook_Open | Körs automatiskt när arbetsboken öppnas (i ThisWorkbook-modulen). | Private Sub Workbook_Open()
MsgBox "Välkommen"
End Sub | Dialog vid öppning |
| Händelser | Worksheet_Change | Körs när celler ändras (i bladmodulen). | Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then Debug.Print "Kolumn A ändrad"
End Sub | Skriver ut vid ändring i kolumn A |
| Strukturer | Enum | Namngivna numeriska konstanter. | Enum Status: stOk=1: stFail=0: End Enum | Mer läsbara tillstånd |
| Strukturer | Type | Användardefinierad struktur (post). | Type Person: Name As String: Age As Long: End Type | Grupperar fält |
| Stil | With | Förkortar upprepade objektreferenser. | With ws.Range("A1")
.Value="Hej": .Font.Bold=True
End With | A1 sätts + fetstil |