Einführung in Makros und VBA
Erste Schritte mit Excel VBA
Liste häufig verwendeter Codes
Wir haben die Vorbereitungen zum Schreiben von VBA und die häufig verwendeten Grundcodes zusammengefasst. Wir stellen Beispiele vor, die Sie kopieren und ausprobieren können, darunter Zell-/Bereichsspezifikation, Variablen, bedingte Verzweigung, Wiederholung und das Schreiben von Funktionen.
Wenn Sie wissen möchten, was Makros und VBA sind, lesen Sie bitte zuerst Einführungsartikel zu Makros/VBA.
Vorbereiten der Entwicklungsumgebung (Windows)
Sie benötigen keine andere Software, um VBA zu schreiben. Schreiben Sie es in VBE(Visual Basic Editor) in Excel und führen Sie es so aus, wie es ist. Bereiten Sie Folgendes zunächst nur einmal vor.
1. Zeigen Sie die Registerkarte „Entwickler“ an
Öffnen Sie „Datei“ → „Optionen“ → „Menüband anpassen“, aktivieren Sie „Entwickler“ in der Liste der „Hauptregisterkarten“ auf der rechten Seite und klicken Sie auf „OK“. Im Menüband wird die Registerkarte „Entwickler“ angezeigt.
2. Öffnen Sie VBE
Klicken Sie auf der Registerkarte „Entwickler“ auf „Visual Basic“.Alt+F11Aber ich kann es öffnen. Durch erneutes Drücken kehren Sie zum Excel-Bildschirm zurück.
3. Standardmodul hinzufügen
Wählen Sie im VBE-Menü „Einfügen“ → „Standardmodul“. „Modul1“ wird im Projekt auf der linken Seite erstellt und Sie können auf der rechten Seite Code schreiben. In diesem Standardmodul werden gewöhnliche Makros geschrieben.
4. Aktivieren Sie „Variablendeklaration erzwingen“
Aktivieren Sie „Variablendeklaration erzwingen“ in VBEs Registerkarte „Extras“ → „Optionen“ → „Bearbeiten“. Die folgende Zeile wird automatisch am Anfang des neu erstellten Moduls eingefügt und eine Fehlermeldung wird angezeigt, um Sie darüber zu informieren, wenn Sie einen Variablennamen falsch eingegeben haben.
Option Explicit ' Am Modulanfang verlangt diese Anweisung die Deklaration von Variablen mit Dim.5. Schreiben und ausführen
Nachdem Sie den Code geschrieben haben, klicken Sie auf „Sub ~ End Sub“ und drücken Sie dann „▶“ (Sub/Run User Form) in der Symbolleiste, oderF5Klicken Sie auf dem Excel-Bildschirm auf „Makros“ (Alt+F8), um einen Namen auszuwählen und auszuführen.
Wenn Sie Zwischenwerte überprüfen möchten, gehen Sie zu VBEs „Ansicht“ → „Sofortfenster“ (Ctrl+G) und schreiben Sie „Debug.Print Variablenname“ in den Code, der Wert wird dort erscheinen.
6. Als makrofähige Arbeitsmappe speichern (.xlsm)
Wählen Sie für die Arbeitsmappe, in der Sie VBA geschrieben haben, unter „Speichern unter“ die Option „Excel-Makros-fähige Arbeitsmappe (*.xlsm)“ aus. Wenn Sie es als normale XLSX-Datei speichern, geht der von Ihnen geschriebene Code verloren.
Wenn Sie beim Öffnen der Arbeitsmappe die Meldung „Sicherheitswarnung: Makros wurden deaktiviert“ erhalten, klicken Sie nur dann auf „Inhalt aktivieren“, wenn es sich bei der Arbeitsmappe um eine von Ihnen erstellte oder vertrauenswürdige Arbeitsmappe handelt. Makros können in Dateien blockiert werden, die per E-Mail oder aus dem Internet gespeichert wurden. Klicken Sie in diesem Fall mit der rechten Maustaste auf die Datei → wählen Sie „Eigenschaften“ und aktivieren Sie „Zulassen“.
Mit einem Makros vorgenommene Änderungen können nicht mit Strg+Z rückgängig gemacht werden.Verwenden Sie beim Ausprobieren eine Kopie der Arbeitsmappe oder Übungsdaten.
Zeigen Sie für Mac die Registerkarte „Entwickler“ an, indem Sie „Excel“-Menü → „Einstellungen“ → „Menüband und Symbolleiste“ auswählen und VBE in „Visual Basic“ auf der Registerkarte „Entwickler“ öffnen.
Üben Sie den Umgang mit dem BrowserÜben Sie vom Anzeigen der Registerkarte „Entwicklertools“ bis zum Ausführen von Code →Eine kurze Referenzliste häufig verwendeter Codes
Wenn Sie so viel lesen können, können Sie auch viele der aufgezeichneten Makros und Codes lesen, die von der KI erstellt wurden. Detaillierte Anweisungen zu den einzelnen Schritten finden Sie in den folgenden Abschnitten.
| Wie schreibe ich | Bedeutung |
|---|---|
| Sub MacroName() 〜 End Sub | Der Anfang und das Ende eines Makros (einer Prozedur) |
| ' Kommentar | ' Hinweise, die nicht bis zum Ende der Zeile ausgeführt werden |
| Dim item As Long | Bereiten Sie eine Variable vor (Long ist eine ganze Zahl) |
| Set item = Worksheets("Bilanz") | Fügen Sie Blätter, Zellen usw. in Variablen ein |
| Range("A1") | Zelle A1 |
| Range("A1:C5") | Bereich von A1 bis C5 |
| Cells(row, column) | Geben Sie Zellen nach Zeilen-/Spaltennummer an |
| Cells(Rows.Count, 1).End(xlUp).Row | Die letzte Zeile mit Daten in Spalte A |
| .Value | Zellwert |
| If condition Then 〜 End If | Nur ausführen, wenn die Bedingungen erfüllt sind |
| For i = 1 To 10 〜 Next i | eine festgelegte Anzahl von Malen wiederholen |
| For Each item In targetRange 〜 Next | Verarbeiten Sie die Zellen im Bereich nacheinander |
| Function MacroName() … End Function | Selbstgemachte Funktion, die einen Wert zurückgibt |
| WorksheetFunction.Sum(targetRange) | Arbeitsblattfunktionen mit VBA verwenden |
| MsgBox "Charaktere" | Nachricht anzeigen |
Grundform von Makros (Sub) und Kommentaren
Das Makros beginnt mit „Sub-Makroname()“ und endet mit „End Sub“. Die während dieser Zeit geschriebenen Befehle werden in der Reihenfolge von oben ausgeführt. Japanisch kann auch in Makronamen verwendet werden.
Sub SayHello()
' Diese Zeile ist kommentiert (nicht ausgeführt)
MsgBox "Hallo"
End Sub「'„(Einfaches Anführungszeichen) am Ende der Zeile ist ein Kommentar. Wenn Sie aufschreiben, was Sie tun, können Sie es später besser lesen oder an jemand anderen weitergeben.
Mit „Aufrufen“ rufen Sie weitere Makros auf.
Sub RunAll()
Call CheckSales ' Rufen Sie ein anderes Makros auf
Call SayHello
End SubSo schreiben Sie Variablen und Konstanten
Variablen sind Felder, in denen berechnete oder häufig verwendete Werte gespeichert werden. Bereiten Sie es mit „Variablennamen als Typ dimmen“ vor und geben Sie den Wert mit „=" ein.
Sub VariablesExample()
Dim total As Long ' ganze Zahl
Dim customer As String ' Zeichenfolge
Dim price As Double ' Zahlen mit Dezimalstellen
Dim today As Date ' Datum
Dim finished As Boolean ' Richtig oder falsch
total = 12
customer = "Komorebi Shop"
price = 1200.5
today = Date
finished = False
Range("A1").Value = customer & ":" & total & "Angelegenheit"
End Sub| Schimmel | Was einzugeben ist |
|---|---|
| Long | Ganzzahl (Zeilennummer, Anzahl der Elemente usw.) |
| Double | Zahlen einschließlich Dezimalzahlen (Beträge, Prozentsätze usw.) |
| String | Zeichenfolge |
| Date | Datum/Uhrzeit |
| Boolean | True / False |
| Variant | Alles kann passen (wenn Sie sich nicht für einen Typ entscheiden) |
| Worksheet / Range | Blatt/Zelle (mit Set einfügen) |
Wenn Sie „Dinge“ (Objekte) wie Tabellen oder Zellen in Variablen speichern, fügen Sie „Setzen“ am Anfang hinzu. Wenn Sie vergessen, es anzuhängen, tritt ein Fehler auf, über den ich oft stolpere.
Dim ws As Worksheet
Set ws = Worksheets("Bilanz") ' Fügen Sie Blätter und Zellen mit Set ein
ws.Range("A1").Value = "Gesamtumsatz"
Dim target As Range
Set target = ws.Range("A2:C10")
target.ClearContentsBei Werten, die sich während des Prozesses nicht ändern, wie z. B. dem Verbrauchssteuersatz, müssen Sie bei der Änderung nur eine Stelle ändern, wenn Sie „Const“ verwenden, um ihn zu einer Konstanten zu machen.
Const TAX_RATE As Double = 0.1 ' Ein Wert, der sich während des Prozesses nicht ändert
Range("C2").Value = Range("B2").Value * (1 + TAX_RATE)So geben Sie Zellen/Bereiche an
Die häufigste Schreibaufgabe in VBA ist die Angabe von Zellen. 「Range("A1")„ ist die Zellenadresse und „Zellen (Zeile, Spalte)“ wird durch die Nummer angegeben.Zellen, die anhand ihrer Nummer angegeben werden können, sind hilfreich, wenn Zeilen während der Wiederholung einzeln verschoben werden sollen.
Range("A1").Value = 100 ' A1
Range("A1:C3").Value = 0 ' Gruppiert in A1-C3
Range("A:A").Font.Bold = True ' Ganze Spalte A
Range("2:2").Font.Bold = True ' gesamte zweite Reihe
Cells(2, 3).Value = "C2" ' 2. Reihe/3. Spalte (C2)
Range(Cells(1, 1), Cells(5, 3)).Select ' A1〜C5
Worksheets("Bilanz").Range("A1").Value = "Insgesamt" ' Blatt angebenWenn Sie keinen Blattnamen eingeben, wird das aktuell geöffnete Blatt (aktives Blatt) als Ziel ausgewählt. Wenn Sie ein anderes Blatt bedienen, klicken Sie aufWorksheets("Blattname").” vorne.
Finde die letzte Zeile
Überprüfen Sie bei Tabellen, bei denen sich die Anzahl der Zeilen jeden Monat ändert, vor der Verarbeitung, wie viele Daten vorhanden sind. Dies ist eine Schreibweise, um die Zeilennummer der ersten Zelle zu finden, die Daten enthält, beginnend bei der untersten Zelle in Spalte A und nach oben arbeitend.
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' Suchen Sie vom Ende der Spalte A nach oben
Range("A2:A" & lastRow).Font.Bold = True ' Vom Ende der Überschrift bis zur letzten ZeileGesamte Tabelle/Schicht/Erweitern
Range("A1").CurrentRegion.Select ' Gesamte Tabelle mit A1 verbunden
Range("A1").Offset(1, 0).Value = "unten" ' 1 Zeile darunter (A2)
Range("A1").Offset(0, 2).Value = "richtig" ' 2. Reihe rechts (C1)
Range("A1").Resize(3, 2).Select ' 3 Zeilen x 2 Spalten von A1 (A1:B3)Bearbeiten von Werten, Formeln und Formaten
Zellwerte werden mit „.Value“ gelesen und geschrieben. Geben Sie für die Formel in „.Formula“ die gleiche Zeichenfolge ein wie bei der Eingabe in Excel.
Range("D2").Formula = "=B2*C2" ' Geben Sie die Formel ein
Range("A2:D10").ClearContents ' Nur den Wert löschen (das Format bleibt erhalten)
Range("A1").Font.Bold = True ' Fett
Range("A1").Interior.Color = RGB(255, 242, 204) ' Füllfarbe
Range("D2:D10").NumberFormat = "#,##0" ' 3-stelliges Trennzeichen
Range("A1:D10").Copy Destination:=Worksheets("reservieren").Range("A1") ' kopieren und einfügenBedingte Verzweigung (If · Select Case)
Verwenden Sie „Wenn ~ Dann“, um die Verarbeitung nach Bedingungen zu trennen. Vergessen Sie nicht das „End If“ am Ende.Verwenden Sie „ElseIf“, um die Bedingung in mehrere Bedingungen zu unterteilen, und „Else“, wenn keine der Bedingungen zutrifft.
If Range("B2").Value >= 80 Then
Range("C2").Value = "Bestanden"
ElseIf Range("B2").Value >= 60 Then
Range("C2").Value = "Rückbestätigung"
Else
Range("C2").Value = "Scheitern"
End IfIf Range("A2").Value = "" Then
MsgBox "A2 ist leer"
End If
' Und (beide), Oder (entweder), <> (ungleich)
If Range("B2").Value >= 60 And Range("C2").Value <> "Abwesenheit" Then
Range("D2").Value = "OK"
End IfBei der Aufteilung auf mehrere Arten basierend auf einem Wert ist „Select Case“ einfacher zu lesen.
Select Case Range("B2").Value
Case "Tokio", "Yokohama"
Range("C2").Value = "Kanto"
Case "Osaka", "Kyoto"
Range("C2").Value = "Kansai"
Case Else
Range("C2").Value = "Andere"
End SelectWiederholen (For · For Each · Do While)
Wenn für jede Zeile die gleiche Verarbeitung durchgeführt wird, zeigt VBA seine größte Leistung.„For ~ Next“ wird wiederholt, während die Variable i um 1 erhöht wird.
Dim i As Long
For i = 2 To 10
Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
Next iWenn Sie Zellen in einem Bereich oder Blätter in einer Arbeitsmappe einzeln verarbeiten, verwenden Sie „Für jeden“.
Dim cell As Range
For Each cell In Range("A2:A10")
If cell.Value = "" Then
cell.Interior.Color = RGB(255, 199, 206) ' Füllen Sie die Lücken mit Rot aus
End If
Next cell
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets ' alle Blätter
ws.Range("A1").Font.Bold = True
Next wsWenn die Endzeile nicht bestimmt ist, wiederholen Sie den Vorgang mit „Do While“, solange die Bedingungen erfüllt sind.Wenn Sie „r = r + 1“ vergessen, können Sie nicht aufhören.Wenn es nicht aufhört,EscOderCtrl+BreakSie können es mit unterbrechen.
Dim r As Long
r = 2
Do While Cells(r, 1).Value <> "" ' Bis Spalte A leer ist
Cells(r, 5).Value = "Bestätigt"
r = r + 1
LoopFor i = 2 To 100
If Cells(i, 1).Value = "Insgesamt" Then Exit For ' Verlassen Sie es auf halbem Weg
Next iWie man Funktionen schreibt und verwendet
Wenn wir in VBA über „Funktionen“ sprechen, gibt es drei Arten:
Erstellen Sie Ihre eigene Funktion (Funktion)
Wenn Sie es mit „Funktion“ erstellen, wird es zu einer Funktion, die den berechneten Wert zurückgibt. Wenn Sie einen Wert in den Funktionsnamen eingeben, ist dies das Ergebnis.Wenn Sie es in einem Standardmodul schreiben, können Sie „=Betrag inklusive Steuer (A2)“ in eine Zelle eingeben und es auf die gleiche Weise wie eine Arbeitsblattfunktion verwenden.
Function PriceWithTax(price As Double) As Double
PriceWithTax = price * 1.1 ' Der Wert, den Sie in den Funktionsnamen eingeben, wird zum Ergebnis.
End Function
Sub UseFunction()
Range("B2").Value = PriceWithTax(Range("A2").Value)
End SubArbeitsblattfunktionen mit VBA verwenden
In Zellen verwendete Funktionen wie SUM und COUNTIF können mit „WorksheetFunction“ aufgerufen werden.
Range("C11").Value = WorksheetFunction.Sum(Range("C2:C10"))
Range("C12").Value = WorksheetFunction.Average(Range("C2:C10"))
Range("C13").Value = WorksheetFunction.CountIf(Range("B2:B10"), "Tokio")VBA-Funktionen
VBA bietet auch Funktionen zur Verarbeitung von Datumsangaben und Zeichenfolgen.
Range("A1").Value = Format(Date, "yyyy-mm-dd") ' das heutige Datum im Text
Range("A2").Value = Now ' aktuelles Datum und Uhrzeit
Range("A3").Value = Len("Komorebi Shop") ' Anzahl der Zeichen → 13
Range("A4").Value = Left("2026-10-06", 4) ' 4 Zeichen von links → 2026
Range("A5").Value = Replace("Tokio Zweig", "Zweig", "") ' Ersetzen → Tokio
Range("A6").Value = Trim(" Tokio ") ' Löschen Sie die Leerzeichen davor und danachNachricht und Eingabe (MsgBox · InputBox)
Wird verwendet, um das Ende der Verarbeitung anzuzeigen oder vor der Ausführen zu bestätigen. Wenn Sie „InputBox“ verwenden, können Sie bei jedem Start des Programms den Monat, die verantwortliche Person usw. eingeben.
MsgBox "Es ist vorbei"
If MsgBox("Möchten Sie es ausführen?", vbYesNo) = vbNo Then Exit Sub
Dim answer As String
answer = InputBox("Wie viele Monate?")
Range("A1").Value = answer & "Monatlich"Blatt-/Buchoperationen
Worksheets("Verkäufe").Activate ' Wechselblätter
Worksheets("Verkäufe").Copy After:=Worksheets(Worksheets.Count) ' Kopierblatt
ActiveSheet.Name = "Okt" ' Blattnamen ändern
Worksheets.Add After:=Worksheets(Worksheets.Count) ' Blatt hinzufügen
Dim book As Workbook
Set book = Workbooks.Open(ThisWorkbook.Path & "\Tokio_October.xlsx")
book.Close SaveChanges:=False ' Schließen ohne zu speichern
ThisWorkbook.Save ' Speichern Sie diese ArbeitsmappeWenn viel Verarbeitungsaufwand anfällt, können Sie die Aktualisierung des Bildschirms stoppen und die Aktualisierung wird schneller abgeschlossen. Mit „On Error GoTo“ können Sie den Ablauf bei Auftreten eines Fehlers schreiben.
Sub RunFaster()
Application.ScreenUpdating = False ' Stoppen Sie Bildschirmaktualisierungen
' ...Prozess, der Zeit braucht...
Application.ScreenUpdating = True ' zurück zum letzten
End SubSub HandleErrors()
On Error GoTo ErrHandler
Worksheets("Bilanz").Range("A1").Value = "OK"
Exit Sub
ErrHandler:
MsgBox "Ich habe eine Fehlermeldung erhalten:" & Err.Description
End SubKombiniertes Beispiel: Berechnung und Einfärbung der Verkaufstabelle
Wenn wir den bisherigen Code kombinieren, erhalten wir Folgendes: Berechnen Sie im Arbeitsblatt „Verkäufe“ in einer Tabelle mit dem Produktnamen in Spalte A, der Menge in Spalte B und dem Stückpreis in Spalte C den Betrag in Spalte D und färben Sie die Zeilen mit 100.000 Yen oder mehr grün.
Sub CheckSales()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Set ws = Worksheets("Verkäufe")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
' Menge = Menge × Stückpreis
ws.Cells(i, 4).Value = ws.Cells(i, 2).Value * ws.Cells(i, 3).Value
' Wenn es über 100.000 Yen ist, ist es grün.
If ws.Cells(i, 4).Value >= 100000 Then
ws.Cells(i, 4).Interior.Color = RGB(198, 239, 206)
Else
ws.Cells(i, 4).Interior.ColorIndex = xlNone
End If
Next i
MsgBox lastRow - 1 & "die Zeile berechnet"
End SubEnthält Variablen (Dim), Blattspezifikation (Set), letzte Zeile, Wiederholung (For) und bedingte Verzweigung (If). Wenn Sie Zeile für Zeile lesen können, „was in welcher Zelle gemacht wird“, können Sie die Anzahl der Zeilen und Bedingungen entsprechend Ihrer Tabelle ändern.
Selbst wenn Sie KI-Code erstellen lassen und diese Form lesen können, können Sie selbst überprüfen, welche Spalte berechnet wird und ob die Bedingungen erfüllt sind.
Erfahren Sie mehr
Wir empfehlen, anhand der Codeliste zu prüfen, wie man den Code schreibt, und ihn dann anhand der Lehrmaterialdatei auszuprobieren. Mit diesem Schritt-für-Schritt-Einführungsbuch können Sie alles von der Aufzeichnung von Makros bis hin zu Variablen, Wiederholungen und bedingten Verzweigungen anhand verbundener Beispiele üben.
Für diejenigen, die das Gefühl haben, alleine nicht weiterkommen zu können, oder diejenigen, die Bereiche ihrer Arbeit besprechen möchten, die sich automatisieren lassen, ist auch die Teilnahme an einem von einem Dozenten geleiteten Kurs eine Option.
Wie man eine Lernmethode auswählt, wird ebenfalls in Wie lernt man Makros und VBA? erläutert.