{"id":511489,"date":"2025-12-15T14:30:06","date_gmt":"2025-12-15T13:30:06","guid":{"rendered":"https:\/\/learnesy.com\/?page_id=511489"},"modified":"2025-12-17T14:03:09","modified_gmt":"2025-12-17T13:03:09","slug":"vba-syntax-med-exempel","status":"publish","type":"page","link":"https:\/\/learnesy.com\/sv\/vba-syntax-med-exempel\/","title":{"rendered":"VBA-Syntax med exempel"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">VBA-syntax med exempel \u2013 uppslagsverk f\u00f6r Excel-makron<\/h2>\n\n\n\n<p>Detta \u00e4r ett referensbibliotek f\u00f6r VBA i Excel med vanliga kommandon, funktioner och kodexempel.<\/p>\n\n\n\n<p>Anv\u00e4nd sidan f\u00f6r att sl\u00e5 upp VBA-syntax, f\u00f6rst\u00e5 vad koden g\u00f6r och snabbt anv\u00e4nda r\u00e4tt struktur n\u00e4r du skapar eller fels\u00f6ker Excel-makron.<\/p>\n\n\n\n<p>Passar b\u00e5de nyb\u00f6rjare och dig som redan arbetar med Excel-automatisering och VBA.<\/p>\n\n\n\n<p><strong>Vill du l\u00e4ra dig automatisera Excelrelaterade uppgifter med VBA och ChatGPT? <\/strong><br>Bekanta dig g\u00e4rna med v\u00e5r kurs:<br>&gt; <a href=\"https:\/\/learnesy.com\/sv\/vba-syntax-med-exempel\/\" data-type=\"page\" data-id=\"511489\">Automatisering med VBA &amp; ChatGPT<\/a><br><\/p>\n\n\n\n<!-- VBA-cheatsheet (inb\u00e4ddningsklar) -->\n<div class=\"vba-cheatsheet\">\n  <div class=\"vba-controls\">\n    <label class=\"vba-label\">\n      S\u00f6k:\n      <input id=\"vbaSearch\" class=\"vba-input\" type=\"search\" placeholder=\"Skriv t.ex. 'If', 'Round', 'Range'...\" \/>\n    <\/label>\n\n    <label class=\"vba-label\">\n      Kategori:\n      <select id=\"vbaCategory\" class=\"vba-select\">\n        <option value=\"__all__\">Alla<\/option>\n      <\/select>\n    <\/label>\n\n\n    <div id=\"vbaCount\" class=\"vba-count\" aria-live=\"polite\"><\/div>\n  <\/div>\n\n  <div class=\"vba-table-wrap\">\n    <table id=\"vbaTable\" class=\"vba-table\">\n      <thead>\n        <tr>\n          <th>Kategori<\/th>\n          <th>Del<\/th>\n          <th>Vad det betyder<\/th>\n          <th>Syntax \/ Exempel<\/th>\n          <th>Exempelutdata \/ resultat<\/th>\n        <\/tr>\n      <\/thead>\n\n      <tbody>\n        <!-- GRUNDER -->\n        <tr><td>Grunder<\/td><td>Option Explicit<\/td><td>Tvingar deklaration av variabler; f\u00f6rhindrar att stavfel blir nya variabler.<\/td><td><code>Option Explicit<\/code> (\u00f6verst i modulen)<\/td><td>Kompileringsfel om odeklarerad variabel anv\u00e4nds<\/td><\/tr>\n        <tr><td>Grunder<\/td><td>Sub<\/td><td>Procedur (makro). Utf\u00f6r \u00e5tg\u00e4rder, returnerar inget v\u00e4rde.<\/td><td><code>Sub Hello(): Debug.Print \"Hej\": End Sub<\/code><\/td><td>Omedelbarf\u00f6nster: <code>Hej<\/code><\/td><\/tr>\n        <tr><td>Grunder<\/td><td>Function<\/td><td>Returnerar ett v\u00e4rde; kan anv\u00e4ndas i formler eller kod.<\/td><td><code>Function Add(a As Long,b As Long) As Long: Add=a+b: End Function<\/code><\/td><td><code>Add(2,3)<\/code> \u2192 <code>5<\/code><\/td><\/tr>\n        <tr><td>Grunder<\/td><td>Kommentarer<\/td><td>F\u00f6rklarar koden; ignoreras av VBA.<\/td><td><code>' kommentar<\/code> eller <code>Debug.Print x ' inline<\/code><\/td><td>Ingen k\u00f6rningseffekt<\/td><\/tr>\n        <tr><td>Grunder<\/td><td>Radbrytning (forts\u00e4ttning)<\/td><td>Forts\u00e4tt en sats p\u00e5 n\u00e4sta rad.<\/td><td><code>Debug.Print \"A\" &amp; _<\/code><br><code>\"B\"<\/code><\/td><td><code>AB<\/code><\/td><\/tr>\n        <tr><td>Grunder<\/td><td>Satsavskiljare<\/td><td>Flera satser p\u00e5 en rad.<\/td><td><code>Dim x As Long: x=5: Debug.Print x<\/code><\/td><td><code>5<\/code><\/td><\/tr>\n\n        <!-- VARIABLER -->\n        <tr><td>Variabler<\/td><td>Dim<\/td><td>Deklarerar en variabel (r\u00e4ckvidd beror p\u00e5 var den anv\u00e4nds).<\/td><td><code>Dim n As Long<\/code><\/td><td>Skapar variabeln <code>n<\/code><\/td><\/tr>\n        <tr><td>Variabler<\/td><td>Const<\/td><td>Deklarerar en konstant (kan inte \u00e4ndras).<\/td><td><code>Const TAX As Double = 0.24<\/code><\/td><td>Of\u00f6r\u00e4nderligt v\u00e4rde<\/td><\/tr>\n        <tr><td>Variabler<\/td><td>Vanliga typer<\/td><td><code>Long<\/code> heltal, <code>Double<\/code> decimaltal, <code>Currency<\/code> pengar, <code>String<\/code> text, <code>Boolean<\/code>, <code>Date<\/code>, <code>Variant<\/code>, <code>Object<\/code>.<\/td><td><code>Dim price As Double<\/code><br><code>Dim name As String<\/code><\/td><td>Typen styr lagring\/beteende<\/td><\/tr>\n        <tr><td>Variabler<\/td><td>Tilldelning (=)<\/td><td>Tilldelar v\u00e4rden till v\u00e4rdetyper.<\/td><td><code>x = 10<\/code><br><code>name = \"Ana\"<\/code><\/td><td><code>x<\/code> blir <code>10<\/code><\/td><\/tr>\n        <tr><td>Variabler<\/td><td>Set<\/td><td>Tilldelar objektreferenser (kr\u00e4vs f\u00f6r objekt).<\/td><td><code>Set ws = ThisWorkbook.Worksheets(\"Sheet1\")<\/code><\/td><td><code>ws<\/code> pekar p\u00e5 Sheet1<\/td><\/tr>\n        <tr><td>Variabler<\/td><td>Nothing<\/td><td>Betyder \u201cingen objektreferens\u201d. J\u00e4mf\u00f6r med <code>Is<\/code>.<\/td><td><code>If ws Is Nothing Then Debug.Print \"saknas\"<\/code><\/td><td><code>saknas<\/code> om inte satt<\/td><\/tr>\n\n        <!-- OPERATORER -->\n        <tr><td>Operatorer<\/td><td>+<\/td><td>Addition (tal).<\/td><td><code>Debug.Print 5 + 2<\/code><\/td><td><code>7<\/code><\/td><\/tr>\n        <tr><td>Operatorer<\/td><td>&#8211;<\/td><td>Subtraktion \/ negation.<\/td><td><code>Debug.Print 5 - 2<\/code><\/td><td><code>3<\/code><\/td><\/tr>\n        <tr><td>Operatorer<\/td><td>*<\/td><td>Multiplikation.<\/td><td><code>Debug.Print 5 * 2<\/code><\/td><td><code>10<\/code><\/td><\/tr>\n        <tr><td>Operatorer<\/td><td>\/<\/td><td>Division (flyttalsresultat).<\/td><td><code>Debug.Print 5 \/ 2<\/code><\/td><td><code>2.5<\/code><\/td><\/tr>\n        <tr><td>Operatorer<\/td><td>\\<\/td><td>Heltalsdivision (sl\u00e4nger resten).<\/td><td><code>Debug.Print 5 \\ 2<\/code><\/td><td><code>2<\/code><\/td><\/tr>\n        <tr><td>Operatorer<\/td><td>Mod<\/td><td>Rest vid division.<\/td><td><code>Debug.Print 5 Mod 2<\/code><\/td><td><code>1<\/code><\/td><\/tr>\n        <tr><td>Operatorer<\/td><td>^<\/td><td>Potens (exponent).<\/td><td><code>Debug.Print 2 ^ 3<\/code><\/td><td><code>8<\/code><\/td><\/tr>\n        <tr><td>Operatorer<\/td><td>&amp;<\/td><td>Str\u00e4ngsammanfogning (f\u00f6redras framf\u00f6r +).<\/td><td><code>Debug.Print \"Hej \" &amp; \"VBA\"<\/code><\/td><td><code>Hej VBA<\/code><\/td><\/tr>\n\n        <!-- J\u00c4MF\u00d6RELSE -->\n        <tr><td>J\u00e4mf\u00f6relse<\/td><td>=<\/td><td>Lika med (returnerar Boolean).<\/td><td><code>Debug.Print (5 = 5)<\/code><\/td><td><code>True<\/code><\/td><\/tr>\n        <tr><td>J\u00e4mf\u00f6relse<\/td><td>&lt;&gt;<\/td><td>Inte lika med.<\/td><td><code>Debug.Print (5 &lt;&gt; 4)<\/code><\/td><td><code>True<\/code><\/td><\/tr>\n        <tr><td>J\u00e4mf\u00f6relse<\/td><td>&lt;<\/td><td>Mindre \u00e4n.<\/td><td><code>Debug.Print (3 &lt; 10)<\/code><\/td><td><code>True<\/code><\/td><\/tr>\n        <tr><td>J\u00e4mf\u00f6relse<\/td><td>&gt;<\/td><td>St\u00f6rre \u00e4n.<\/td><td><code>Debug.Print (10 &gt; 3)<\/code><\/td><td><code>True<\/code><\/td><\/tr>\n        <tr><td>J\u00e4mf\u00f6relse<\/td><td>&lt;=<\/td><td>Mindre \u00e4n eller lika med.<\/td><td><code>Debug.Print (3 &lt;= 3)<\/code><\/td><td><code>True<\/code><\/td><\/tr>\n        <tr><td>J\u00e4mf\u00f6relse<\/td><td>&gt;=<\/td><td>St\u00f6rre \u00e4n eller lika med.<\/td><td><code>Debug.Print (3 &gt;= 10)<\/code><\/td><td><code>False<\/code><\/td><\/tr>\n\n        <!-- LOGIK -->\n        <tr><td>Logik<\/td><td>And<\/td><td>Sant om b\u00e5da sidorna \u00e4r sanna.<\/td><td><code>Debug.Print (5&gt;3 And 2&lt;4)<\/code><\/td><td><code>True<\/code><\/td><\/tr>\n        <tr><td>Logik<\/td><td>Or<\/td><td>Sant om minst en sida \u00e4r sann.<\/td><td><code>Debug.Print (5&gt;3 Or 2&gt;4)<\/code><\/td><td><code>True<\/code><\/td><\/tr>\n        <tr><td>Logik<\/td><td>Not<\/td><td>V\u00e4nder True\u2194False.<\/td><td><code>Debug.Print Not (5=5)<\/code><\/td><td><code>False<\/code><\/td><\/tr>\n        <tr><td>Logik<\/td><td>Xor<\/td><td>Sant om exakt en sida \u00e4r sann.<\/td><td><code>Debug.Print (True Xor True)<\/code><\/td><td><code>False<\/code><\/td><\/tr>\n        <tr><td>Logik<\/td><td>Is<\/td><td>J\u00e4mf\u00f6r objektidentitet (och <code>Is Nothing<\/code>).<\/td><td><code>Debug.Print (ws Is Nothing)<\/code><\/td><td><code>True\/False<\/code><\/td><\/tr>\n\n        <!-- STYRFL\u00d6DE -->\n        <tr><td>Styrfl\u00f6de<\/td><td>If&#8230;Then<\/td><td>K\u00f6r blocket endast om villkoret \u00e4r True.<\/td><td><code>If x&gt;10 Then Debug.Print \"Stort\"<\/code><\/td><td><code>Stort<\/code> (om x&gt;10)<\/td><\/tr>\n        <tr><td>Styrfl\u00f6de<\/td><td>If&#8230;Else<\/td><td>Tv\u00e5v\u00e4gsval.<\/td><td><code>If x&gt;10 Then Debug.Print \"Stort\" Else Debug.Print \"Litet\"<\/code><\/td><td><code>Stort<\/code> eller <code>Litet<\/code><\/td><\/tr>\n        <tr><td>Styrfl\u00f6de<\/td><td>ElseIf<\/td><td>Flerval med flera villkor.<\/td><td><code>If x&gt;10 Then ... ElseIf x=10 Then ... Else ... End If<\/code><\/td><td>En gren k\u00f6rs<\/td><\/tr>\n        <tr><td>Styrfl\u00f6de<\/td><td>Select Case<\/td><td>Rent flerval baserat p\u00e5 ett uttryck.<\/td><td><code>Select Case x<\/code><br><code>Case 1: Debug.Print \"Ett\"<\/code><br><code>Case 2 To 5: Debug.Print \"2\u20135\"<\/code><br><code>Case Else: Debug.Print \"Annat\"<\/code><br><code>End Select<\/code><\/td><td>Skriver ut matchande text<\/td><\/tr>\n        <tr><td>Styrfl\u00f6de<\/td><td>GoTo<\/td><td>Hoppar till en etikett (anv\u00e4nd mest f\u00f6r felhantering).<\/td><td><code>GoTo Hoppa<\/code><br><code>Debug.Print \"A\"<\/code><br><code>Hoppa: Debug.Print \"B\"<\/code><\/td><td>Skriver bara <code>B<\/code><\/td><\/tr>\n\n        <!-- LOOPAR -->\n        <tr><td>Loopar<\/td><td>For&#8230;Next<\/td><td>R\u00e4kneloop.<\/td><td><code>For i=1 To 3: Debug.Print i: Next<\/code><\/td><td><code>1 2 3<\/code><\/td><\/tr>\n        <tr><td>Loopar<\/td><td>Step<\/td><td>\u00c4ndrar stegl\u00e4ngd i For-loop.<\/td><td><code>For i=10 To 2 Step -2: Debug.Print i: Next<\/code><\/td><td><code>10 8 6 4 2<\/code><\/td><\/tr>\n        <tr><td>Loopar<\/td><td>For Each<\/td><td>Loopar igenom objekt i en samling (Range, Sheets, osv.).<\/td><td><code>For Each ws In ThisWorkbook.Worksheets: Debug.Print ws.Name: Next<\/code><\/td><td>Skriver ut alla bladnamn<\/td><\/tr>\n        <tr><td>Loopar<\/td><td>Do While&#8230;Loop<\/td><td>Loopar s\u00e5 l\u00e4nge villkoret \u00e4r True.<\/td><td><code>Do While x&lt;3: x=x+1: Loop<\/code><\/td><td>x slutar p\u00e5 3<\/td><\/tr>\n        <tr><td>Loopar<\/td><td>Do Until&#8230;Loop<\/td><td>Loopar tills villkoret blir True.<\/td><td><code>Do Until x=3: x=x+1: Loop<\/code><\/td><td>x slutar p\u00e5 3<\/td><\/tr>\n        <tr><td>Loopar<\/td><td>Exit For \/ Exit Do<\/td><td>Avslutar loopen direkt.<\/td><td><code>If i=5 Then Exit For<\/code><\/td><td>Loop slutar i f\u00f6rtid<\/td><\/tr>\n        <tr><td>Procedurer<\/td><td>Exit Sub \/ Exit Function<\/td><td>L\u00e4mnar proceduren direkt.<\/td><td><code>If fel Then Exit Sub<\/code><\/td><td>Makrot\/funktionen avbryts<\/td><\/tr>\n\n        <!-- PARAMETRAR -->\n        <tr><td>Parametrar<\/td><td>ByRef<\/td><td>Skickar variabeln som referens (standard). Funktionen kan \u00e4ndra originalet.<\/td><td><code>Sub Inc(ByRef n As Long): n=n+1: End Sub<\/code><\/td><td><code>n<\/code> \u00e4ndras<\/td><\/tr>\n        <tr><td>Parametrar<\/td><td>ByVal<\/td><td>Skickar en kopia. Funktionen kan inte \u00e4ndra originalet.<\/td><td><code>Sub Inc(ByVal n As Long): n=n+1: End Sub<\/code><\/td><td>Uppringaren of\u00f6r\u00e4ndrad<\/td><\/tr>\n        <tr><td>Parametrar<\/td><td>Optional<\/td><td>Parametern kan utel\u00e4mnas; standardv\u00e4rde anv\u00e4nds.<\/td><td><code>Sub H\u00e4lsa(Optional vem As String=\"V\u00e4rlden\")<\/code><\/td><td><code>H\u00e4lsa<\/code> \u2192 Hej V\u00e4rlden<\/td><\/tr>\n        <tr><td>Parametrar<\/td><td>ParamArray<\/td><td>Tar emot valfritt antal argument (som array).<\/td><td><code>Function SumAll(ParamArray nums()): ... End Function<\/code><\/td><td><code>SumAll(1,2,3)<\/code> \u2192 6<\/td><\/tr>\n\n        <!-- ARRAYER -->\n        <tr><td>Arrayer<\/td><td>Fast array<\/td><td>Storlek best\u00e4ms vid deklaration.<\/td><td><code>Dim a(1 To 3) As Long<\/code><\/td><td>Index 1..3<\/td><\/tr>\n        <tr><td>Arrayer<\/td><td>Dynamisk array<\/td><td>Storlek best\u00e4ms vid k\u00f6rning med <code>ReDim<\/code>.<\/td><td><code>Dim a() As Long: ReDim a(1 To 5)<\/code><\/td><td>Index 1..5<\/td><\/tr>\n        <tr><td>Arrayer<\/td><td>ReDim Preserve<\/td><td>\u00c4ndrar storlek men beh\u00e5ller v\u00e4rden (bara sista dimensionen kan \u00e4ndras).<\/td><td><code>ReDim Preserve a(1 To 10)<\/code><\/td><td>Gamla v\u00e4rden beh\u00e5lls<\/td><\/tr>\n        <tr><td>Arrayer<\/td><td>LBound\/UBound<\/td><td>Ger l\u00e4gsta\/h\u00f6gsta index.<\/td><td><code>Debug.Print LBound(a), UBound(a)<\/code><\/td><td>t.ex. <code>1 10<\/code><\/td><\/tr>\n\n        <!-- STR\u00c4NGAR -->\n        <tr><td>Str\u00e4ngar<\/td><td>Len<\/td><td>Str\u00e4ngens l\u00e4ngd.<\/td><td><code>Debug.Print Len(\"Hello\")<\/code><\/td><td><code>5<\/code><\/td><\/tr>\n        <tr><td>Str\u00e4ngar<\/td><td>Left\/Right<\/td><td>Tar v\u00e4nster\/h\u00f6ger tecken.<\/td><td><code>Debug.Print Left(\"Hello\",2)<\/code><\/td><td><code>He<\/code><\/td><\/tr>\n        <tr><td>Str\u00e4ngar<\/td><td>Mid<\/td><td>Tar delstr\u00e4ng fr\u00e5n position.<\/td><td><code>Debug.Print Mid(\"Hello\",2,3)<\/code><\/td><td><code>ell<\/code><\/td><\/tr>\n        <tr><td>Str\u00e4ngar<\/td><td>UCase\/LCase<\/td><td>Versaler \/ gemener.<\/td><td><code>Debug.Print UCase(\"Hi\")<\/code><\/td><td><code>HI<\/code><\/td><\/tr>\n        <tr><td>Str\u00e4ngar<\/td><td>Trim<\/td><td>Tar bort inledande\/avslutande mellanslag.<\/td><td><code>Debug.Print Trim(\"  hi  \")<\/code><\/td><td><code>hi<\/code><\/td><\/tr>\n        <tr><td>Str\u00e4ngar<\/td><td>Replace<\/td><td>Ers\u00e4tter f\u00f6rekomster av deltext.<\/td><td><code>Debug.Print Replace(\"a-b\",\"-\",\"_\")<\/code><\/td><td><code>a_b<\/code><\/td><\/tr>\n        <tr><td>Str\u00e4ngar<\/td><td>InStr<\/td><td>Hittar position (0 om ej hittad).<\/td><td><code>Debug.Print InStr(1,\"banana\",\"na\")<\/code><\/td><td><code>3<\/code><\/td><\/tr>\n        <tr><td>Str\u00e4ngar<\/td><td>Split\/Join<\/td><td>Splittrar text till array \/ sammanfogar array till text.<\/td><td><code>parts=Split(\"a,b,c\",\",\")<\/code><br><code>Debug.Print Join(parts,\"|\")<\/code><\/td><td><code>a|b|c<\/code><\/td><\/tr>\n\n        <!-- KONVERTERING \/ MATTE -->\n        <tr><td>Konvertering<\/td><td>CInt\/CLng\/CDbl<\/td><td>Konvertera till Integer\/Long\/Double.<\/td><td><code>Debug.Print CLng(3.9)<\/code><\/td><td>Ofta <code>4<\/code> (bankers rounding kan g\u00e4lla)<\/td><\/tr>\n        <tr><td>Konvertering<\/td><td>CStr<\/td><td>Konvertera till String.<\/td><td><code>Debug.Print CStr(123)<\/code><\/td><td><code>123<\/code><\/td><\/tr>\n        <tr><td>Matte<\/td><td>Int \/ Fix<\/td><td><code>Int<\/code> avrundar ned\u00e5t (mot -\u221e). <code>Fix<\/code> kapar mot 0.<\/td><td><code>Debug.Print Int(-3.9)<\/code><br><code>Debug.Print Fix(-3.9)<\/code><\/td><td><code>-4<\/code> och <code>-3<\/code><\/td><\/tr>\n        <tr><td>Matte<\/td><td>Round<\/td><td>Avrundar (VBA anv\u00e4nder bankers rounding).<\/td><td><code>Debug.Print Round(2.5,0)<\/code><\/td><td><code>2<\/code><\/td><\/tr>\n        <tr><td>Matte<\/td><td>Abs\/Sqr<\/td><td>Absolutv\u00e4rde \/ kvadratrot.<\/td><td><code>Debug.Print Abs(-5)<\/code><br><code>Debug.Print Sqr(9)<\/code><\/td><td><code>5<\/code>, <code>3<\/code><\/td><\/tr>\n        <tr><td>Slump<\/td><td>Randomize\/Rnd<\/td><td>Seedar slump \/ slump-tal 0..1.<\/td><td><code>Randomize: Debug.Print Rnd<\/code><\/td><td>t.ex. <code>0.4832<\/code><\/td><\/tr>\n        <tr><td>Formatering<\/td><td>Format<\/td><td>Formaterar tal\/datum till text.<\/td><td><code>Debug.Print Format(1234.5,\"#,##0.00\")<\/code><\/td><td><code>1,234.50<\/code><\/td><\/tr>\n\n        <!-- DATUM\/TID -->\n        <tr><td>Datum\/Tid<\/td><td>Date\/Time\/Now<\/td><td>Aktuellt datum, tid eller b\u00e5da.<\/td><td><code>Debug.Print Date<\/code><br><code>Debug.Print Time<\/code><br><code>Debug.Print Now<\/code><\/td><td>Beror p\u00e5 nuvarande tidpunkt<\/td><\/tr>\n        <tr><td>Datum\/Tid<\/td><td>DateAdd<\/td><td>L\u00e4gger till ett intervall p\u00e5 datum\/tid.<\/td><td><code>Debug.Print DateAdd(\"d\",7,Date)<\/code><\/td><td>Datum + 7 dagar<\/td><\/tr>\n        <tr><td>Datum\/Tid<\/td><td>DateDiff<\/td><td>Skillnad mellan datum i ett intervall.<\/td><td><code>Debug.Print DateDiff(\"d\",Date,DateAdd(\"m\",1,Date))<\/code><\/td><td>Dagar tills +1 m\u00e5nad<\/td><\/tr>\n\n        <!-- FELHANTERING -->\n        <tr><td>Felhantering<\/td><td>On Error GoTo<\/td><td>Skickar fel till en hanterare (etikett).<\/td><td><code>On Error GoTo EH<\/code><br><code>x=1\/0<\/code><br><code>Exit Sub<\/code><br><code>EH: Debug.Print Err.Number, Err.Description<\/code><\/td><td><code>11<\/code> Division med noll<\/td><\/tr>\n        <tr><td>Felhantering<\/td><td>On Error Resume Next<\/td><td>Ignorerar k\u00f6rfel och forts\u00e4tter (anv\u00e4nd f\u00f6rsiktigt).<\/td><td><code>On Error Resume Next<\/code><br><code>Kill \"C:\\nope.txt\"<\/code><br><code>On Error GoTo 0<\/code><\/td><td>Ingen krasch; kontrollera <code>Err<\/code><\/td><\/tr>\n        <tr><td>Felhantering<\/td><td>On Error GoTo 0<\/td><td>St\u00e4nger av aktuell felhanterare.<\/td><td><code>On Error GoTo 0<\/code><\/td><td>Normal felhantering igen<\/td><\/tr>\n\n        <!-- FELS\u00d6KNING -->\n        <tr><td>Fels\u00f6kning<\/td><td>Debug.Print<\/td><td>Skriver till Omedelbarf\u00f6nstret (Ctrl+G).<\/td><td><code>Debug.Print \"x=\", x<\/code><\/td><td>Visar v\u00e4rde<\/td><\/tr>\n        <tr><td>Fels\u00f6kning<\/td><td>Debug.Assert<\/td><td>Stoppar i debug om villkoret \u00e4r False.<\/td><td><code>Debug.Assert x &gt; 0<\/code><\/td><td>Stoppar om x \u2264 0 (i debug)<\/td><\/tr>\n        <tr><td>Fels\u00f6kning<\/td><td>Stop<\/td><td>Tvingar en paus (som en breakpoint).<\/td><td><code>Stop<\/code><\/td><td>K\u00f6rning pausar<\/td><\/tr>\n\n        <!-- EXCEL -->\n        <tr><td>Excel<\/td><td>ThisWorkbook<\/td><td>Arbetsboken som inneh\u00e5ller VBA-projektet.<\/td><td><code>Set wb = ThisWorkbook<\/code><\/td><td>Stabil referens<\/td><\/tr>\n        <tr><td>Excel<\/td><td>ActiveWorkbook<\/td><td>Arbetsboken som \u00e4r aktiv just nu (kan \u00e4ndras ov\u00e4ntat).<\/td><td><code>Set wb = ActiveWorkbook<\/code><\/td><td>Beror p\u00e5 fokus<\/td><\/tr>\n        <tr><td>Excel<\/td><td>Worksheet<\/td><td>Ett bladobjekt.<\/td><td><code>Set ws = wb.Worksheets(\"Sheet1\")<\/code><\/td><td><code>ws.Name<\/code> \u2192 Sheet1<\/td><\/tr>\n        <tr><td>Excel<\/td><td>Range<\/td><td>En cell eller ett cellomr\u00e5de.<\/td><td><code>ws.Range(\"A1\").Value = \"Hej\"<\/code><\/td><td>A1 blir \u201cHej\u201d<\/td><\/tr>\n        <tr><td>Excel<\/td><td>Cells<\/td><td>Rad\/kolumn-indexering till en cell.<\/td><td><code>ws.Cells(1,2).Value = 10<\/code><\/td><td>B1 blir 10<\/td><\/tr>\n        <tr><td>Excel<\/td><td>ClearContents<\/td><td>Tar bort v\u00e4rden\/formler men beh\u00e5ller formatering.<\/td><td><code>ws.Range(\"A1:B2\").ClearContents<\/code><\/td><td>Celler t\u00f6ms<\/td><\/tr>\n        <tr><td>Excel<\/td><td>Clear<\/td><td>Tar bort v\u00e4rden + formatering.<\/td><td><code>ws.Range(\"A1:B2\").Clear<\/code><\/td><td>Celler \u00e5terst\u00e4lls<\/td><\/tr>\n        <tr><td>Excel<\/td><td>Copy\/PasteSpecial<\/td><td>Kopiera och klistra in med kontroll (v\u00e4rden, format, etc.).<\/td><td><code>ws.Range(\"A1\").Copy<\/code><br><code>ws.Range(\"B1\").PasteSpecial xlPasteValues<\/code><\/td><td>B1 f\u00e5r endast v\u00e4rdet<\/td><\/tr>\n        <tr><td>Excel<\/td><td>AutoFit<\/td><td>Autojusterar kolumner\/rader.<\/td><td><code>ws.Columns(\"A\").AutoFit<\/code><\/td><td>Kolumn A passar inneh\u00e5ll<\/td><\/tr>\n        <tr><td>Excel<\/td><td>Sista raden<\/td><td>Hittar sista anv\u00e4nda raden i en kolumn.<\/td><td><code>lastRow = ws.Cells(ws.Rows.Count,\"A\").End(xlUp).Row<\/code><\/td><td>t.ex. <code>128<\/code><\/td><\/tr>\n        <tr><td>Excel<\/td><td>CurrentRegion<\/td><td>Sammanh\u00e4ngande block runt en cell (som Ctrl+A-region).<\/td><td><code>Set r = ws.Range(\"A1\").CurrentRegion<\/code><\/td><td>Ut\u00f6kar till datablock<\/td><\/tr>\n        <tr><td>Excel<\/td><td>UsedRange<\/td><td>Alla celler Excel tycker \u00e4r anv\u00e4nda (kan vara \u201csmutsigt\u201d).<\/td><td><code>Set r = ws.UsedRange<\/code><\/td><td>T\u00e4cker \u201canv\u00e4nt\u201d omr\u00e5de<\/td><\/tr>\n\n        <!-- PRESTANDA -->\n        <tr><td>Prestanda<\/td><td>ScreenUpdating<\/td><td>St\u00e4ng av sk\u00e4rmuppdatering f\u00f6r snabbare k\u00f6rning.<\/td><td><code>Application.ScreenUpdating = False<\/code><\/td><td>Snabbare makron<\/td><\/tr>\n        <tr><td>Prestanda<\/td><td>EnableEvents<\/td><td>St\u00e4ng av h\u00e4ndelser f\u00f6r att undvika \u00e5tertriggning.<\/td><td><code>Application.EnableEvents = False<\/code><\/td><td>Undviker event-loopar<\/td><\/tr>\n        <tr><td>Prestanda<\/td><td>Calculation<\/td><td>Manuell ber\u00e4kning f\u00f6r fart; \u00e5terst\u00e4ll efter\u00e5t.<\/td><td><code>Application.Calculation = xlCalculationManual<\/code><\/td><td>Stoppar autober\u00e4kning<\/td><\/tr>\n\n        <!-- UI -->\n        <tr><td>UI<\/td><td>MsgBox<\/td><td>Visar en meddelanderuta.<\/td><td><code>MsgBox \"Klart!\", vbInformation, \"Status\"<\/code><\/td><td>Anv\u00e4ndaren ser dialog<\/td><\/tr>\n        <tr><td>UI<\/td><td>InputBox<\/td><td>Ber anv\u00e4ndaren om textinmatning.<\/td><td><code>name = InputBox(\"Ditt namn?\")<\/code><\/td><td>Returnerar anv\u00e4ndarens text<\/td><\/tr>\n\n        <!-- FILER -->\n        <tr><td>Filer<\/td><td>Dir<\/td><td>Snabb kontroll om fil finns (tom str\u00e4ng om saknas).<\/td><td><code>If Dir(p)&lt;&gt;\"\" Then Debug.Print \"Finns\"<\/code><\/td><td><code>Finns<\/code> \/ inget<\/td><\/tr>\n        <tr><td>Filer<\/td><td>FreeFile<\/td><td>H\u00e4mtar ett ledigt filnummer f\u00f6r Open.<\/td><td><code>f = FreeFile<\/code><\/td><td>t.ex. <code>1<\/code><\/td><\/tr>\n        <tr><td>Filer<\/td><td>Open\/Print#\/Close<\/td><td>Skriver en enkel textfil.<\/td><td><code>f=FreeFile<\/code><br><code>Open \"C:\\Temp\\log.txt\" For Output As #f<\/code><br><code>Print #f, \"Hej\"<\/code><br><code>Close #f<\/code><\/td><td>Filen inneh\u00e5ller \u201cHej\u201d<\/td><\/tr>\n\n        <!-- SAMLINGAR -->\n        <tr><td>Samlingar<\/td><td>Collection<\/td><td>Enkel listbeh\u00e5llare (1-baserad indexering).<\/td><td><code>Dim col As New Collection<\/code><br><code>col.Add \"A\": Debug.Print col(1)<\/code><\/td><td><code>A<\/code><\/td><\/tr>\n        <tr><td>Samlingar<\/td><td>Dictionary<\/td><td>Nyckel\/v\u00e4rde-lager (late bound).<\/td><td><code>Set d=CreateObject(\"Scripting.Dictionary\")<\/code><br><code>d.Add \"cat\",3<\/code><br><code>Debug.Print d(\"cat\")<\/code><\/td><td><code>3<\/code><\/td><\/tr>\n\n        <!-- H\u00c4NDELSER -->\n        <tr><td>H\u00e4ndelser<\/td><td>Workbook_Open<\/td><td>K\u00f6rs automatiskt n\u00e4r arbetsboken \u00f6ppnas (i ThisWorkbook-modulen).<\/td><td><code>Private Sub Workbook_Open()<\/code><br><code>MsgBox \"V\u00e4lkommen\"<\/code><br><code>End Sub<\/code><\/td><td>Dialog vid \u00f6ppning<\/td><\/tr>\n        <tr><td>H\u00e4ndelser<\/td><td>Worksheet_Change<\/td><td>K\u00f6rs n\u00e4r celler \u00e4ndras (i bladmodulen).<\/td><td><code>Private Sub Worksheet_Change(ByVal Target As Range)<\/code><br><code>If Not Intersect(Target, Me.Range(\"A:A\")) Is Nothing Then Debug.Print \"Kolumn A \u00e4ndrad\"<\/code><br><code>End Sub<\/code><\/td><td>Skriver ut vid \u00e4ndring i kolumn A<\/td><\/tr>\n\n        <!-- STRUKTURER \/ STIL -->\n        <tr><td>Strukturer<\/td><td>Enum<\/td><td>Namngivna numeriska konstanter.<\/td><td><code>Enum Status: stOk=1: stFail=0: End Enum<\/code><\/td><td>Mer l\u00e4sbara tillst\u00e5nd<\/td><\/tr>\n        <tr><td>Strukturer<\/td><td>Type<\/td><td>Anv\u00e4ndardefinierad struktur (post).<\/td><td><code>Type Person: Name As String: Age As Long: End Type<\/code><\/td><td>Grupperar f\u00e4lt<\/td><\/tr>\n        <tr><td>Stil<\/td><td>With<\/td><td>F\u00f6rkortar upprepade objektreferenser.<\/td><td><code>With ws.Range(\"A1\")<\/code><br><code>.Value=\"Hej\": .Font.Bold=True<\/code><br><code>End With<\/code><\/td><td>A1 s\u00e4tts + fetstil<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n<\/div>\n\n<style>\n  \/* Outer padding for embedding *\/\n  .vba-cheatsheet{\n    padding:24px;             \/* outer padding you asked for *\/\n    box-sizing:border-box;\n  }\n\n  .vba-controls{\n    display:flex;\n    flex-wrap:wrap;\n    gap:12px;\n    align-items:end;\n    margin-bottom:14px;\n  }\n\n  .vba-label{\n    display:flex;\n    flex-direction:column;\n    gap:6px;\n    font-weight:600;\n  }\n\n  .vba-input, .vba-select{\n    padding:10px 12px;\n    border:1px solid #cfcfcf;\n    border-radius:10px;\n    min-width:260px;\n    font-weight:400;\n    box-sizing:border-box;\n  }\n\n  .vba-select{ min-width:200px; }\n\n  .vba-button{\n    padding:10px 14px;\n    border:1px solid #cfcfcf;\n    background:#fff;\n    border-radius:10px;\n    cursor:pointer;\n    font-weight:600;\n  }\n\n  .vba-count{\n    margin-left:auto;\n    font-size:13px;\n    opacity:.8;\n    padding-bottom:2px;\n  }\n\n  .vba-table-wrap{\n    overflow:auto;            \/* responsive *\/\n    border:1px solid #d9d9d9; \/* table outer border *\/\n    border-radius:14px;\n  }\n\n  .vba-table{\n    width:100%;\n    border-collapse:separate; \/* keep row separators clean *\/\n    border-spacing:0;\n    font-family:Arial, sans-serif;\n    font-size:14px;\n  }\n\n  .vba-table thead th{\n    position:sticky;\n    top:0;\n    background:#f2f2f2;\n    text-align:left;\n    padding:12px;\n    border-bottom:2px solid #d0d0d0; \/* header separator *\/\n    z-index:1;\n  }\n\n  .vba-table tbody td{\n    padding:12px;\n    vertical-align:top;\n    border-bottom:1px solid #e2e2e2; \/* borders between rows (your request) *\/\n  }\n\n  \/* optional: vertical column separators *\/\n  .vba-table th, .vba-table td{\n    border-right:1px solid #ededed;\n  }\n  .vba-table th:last-child, .vba-table td:last-child{\n    border-right:none;\n  }\n\n  .vba-table tbody tr:last-child td{\n    border-bottom:none;\n  }\n\n  .vba-table code{\n    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n    font-size: 0.95em;\n    background:#fafafa;\n    padding:2px 6px;\n    border-radius:8px;\n    border:1px solid #eee;\n    white-space:nowrap;\n  }\n\n  \/* hide rows *\/\n  .vba-hidden{ display:none; }\n<\/style>\n\n<script>\n  (function () {\n    const table = document.getElementById(\"vbaTable\");\n    const tbody = table.querySelector(\"tbody\");\n    const rows = Array.from(tbody.querySelectorAll(\"tr\"));\n\n    const searchEl = document.getElementById(\"vbaSearch\");\n    const categoryEl = document.getElementById(\"vbaCategory\");\n    const clearEl = document.getElementById(\"vbaClear\");\n    const countEl = document.getElementById(\"vbaCount\");\n\n    \/\/ Build category list from first column\n    const categories = Array.from(new Set(rows.map(r => (r.cells[0]?.textContent || \"\").trim())))\n      .filter(Boolean)\n      .sort((a,b) => a.localeCompare(b, \"sv\"));\n\n    for (const cat of categories) {\n      const opt = document.createElement(\"option\");\n      opt.value = cat;\n      opt.textContent = cat;\n      categoryEl.appendChild(opt);\n    }\n\n    function normalize(s){\n      return (s || \"\")\n        .toLowerCase()\n        .normalize(\"NFD\")\n        .replace(\/[\\u0300-\\u036f]\/g, \"\"); \/\/ remove accents\n    }\n\n    function applyFilters(){\n      const q = normalize(searchEl.value.trim());\n      const cat = categoryEl.value;\n\n      let visible = 0;\n\n      for (const r of rows) {\n        const rowCat = (r.cells[0]?.textContent || \"\").trim();\n\n        \/\/ search across whole row text (including code)\n        const rowText = normalize(r.textContent);\n\n        const matchCategory = (cat === \"__all__\") || (rowCat === cat);\n        const matchSearch = (!q) || rowText.includes(q);\n\n        const show = matchCategory && matchSearch;\n        r.classList.toggle(\"vba-hidden\", !show);\n        if (show) visible++;\n      }\n\n      countEl.textContent = `Visar ${visible} av ${rows.length} rader`;\n    }\n\n    searchEl.addEventListener(\"input\", applyFilters);\n    categoryEl.addEventListener(\"change\", applyFilters);\n\n    clearEl.addEventListener(\"click\", function(){\n      searchEl.value = \"\";\n      categoryEl.value = \"__all__\";\n      applyFilters();\n      searchEl.focus();\n    });\n\n    \/\/ initial count + state\n    applyFilters();\n  })();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>VBA-syntax med exempel \u2013 uppslagsverk f\u00f6r Excel-makron Detta \u00e4r ett referensbibliotek f\u00f6r VBA i Excel med vanliga kommandon, funktioner och kodexempel. Anv\u00e4nd sidan f\u00f6r att sl\u00e5 upp VBA-syntax, f\u00f6rst\u00e5 vad koden g\u00f6r och snabbt anv\u00e4nda [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_eb_attr":"","footnotes":""},"class_list":["post-511489","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/pages\/511489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/comments?post=511489"}],"version-history":[{"count":18,"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/pages\/511489\/revisions"}],"predecessor-version":[{"id":512579,"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/pages\/511489\/revisions\/512579"}],"wp:attachment":[{"href":"https:\/\/learnesy.com\/sv\/wp-json\/wp\/v2\/media?parent=511489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}