Application.ScreenUpdating = False
Application.ScreenUpdating = True
Die Bildschirmaktualisierung wird ab- und wieder eingeschaltet. Das verhindert einen flackernden Bildschirm und beschleunigt damit unseren VBA Code.
Beispielcode:
Application.Calculation = xlCalculationManual
Automatische Berechnungen werden in Excel, beim Start, abgeschaltet. Soll also etwas berechnet werden, so muss das manuell geschehen. Dies geschieht mit der Taste F9.
Beispielcode in "Diese Arbeitsmappe":
Application.Calculation = xlCalculationAutomatic
Schliessen wir Excel, so schalten wir die automatischen Berechnungen wieder ein.
Beispielcode in "Diese Arbeitsmappe:
Application.CalculateBeforeSave = True
Wir wollen dass vor dem Speichern unserer Excel Datei noch berechnet wird .
Beispielcode in "Diese Arbeitsmappe:
Application.DisplayAlerts = False
Bestimmte Meldungen, von Excel, werden unterdrückt. Würde man zum Beispiel eine Datei unter einem Namen abspeichern, welcher schon einmal existiert, so sagt uns das Excel sofort an. Es gibt aber Situationen wo das nicht gewünscht ist.
Beispielcode:
Application.Quit
Excel wird ohne Nachfrage- ohne speichern beendet
Beispielcode:
Es werden erst alle Excel Tabellen gespeichert - danach werden alle Arbeitsmappen (Excel allgemein) geschlossen.
Beispielcode:
Application.Run
Mit diesem Befehl kann man ein Makro, welches sich in einem anderen Workbook, einer anderen Excel Datei, befindet, starten.
Beispielcode:
Application.Inputbox
Es handelt sich hierbei um eine Erweiterung der uns bekannten Inputbox. Man kann der Inputbox verschiedene Rückgabeparameter zuordnen:
Beispielcode:
Application.CutCopyMode = False
Weder Cut noch Copy sind im Ausschneide- oder im Kopiermodus.
Die Folge dieser Anweisung ist die Leerung der Zwischenablage und die Aufhebung des blinkenden Rahmens, den man durch Range.Copy, oder Cut, erzeugt hat.
Application.CutCopyMode = xlCopy
Ist CutCopy im Kopiermodus?
Application.CutCopyMode = xlCut
Ist CutCopy im Ausschneidemodus?
Beispielmakro hinter einem Tabellenblatt:
Application.EnableEvents = False
Ein Workbook_Change-Ereignis wird nur einmal ausgeführt.
Application.Goto
Application.Goto ist im weitesten Sinne eine Art von Select. Wir können mit diesem Befehl eine Zelle, oder einen Bereich selektieren.
Mit
machen wir einen Sprung zu dieser Zelle, welche auch in einem anderen Tabellenblatt liegen könnte. Nutzen wir zusätzlich den Anhang ", scroll:=True", also:
wird die Zelle 70,1 auf unserem Bildschirm direkt in die linke obere Ecke gesetzt.
Einen Bereich würden wir so ansprechen:
Application.WorksheetFunction
Hiermit können wir Arbeitsblattfunktionen (Summe, Min, Max, etc) in einen VBA Code einbauen.
Beispielcode:
Application.ScreenUpdating = True
Die Bildschirmaktualisierung wird ab- und wieder eingeschaltet. Das verhindert einen flackernden Bildschirm und beschleunigt damit unseren VBA Code.
Beispielcode:
Code:
'2 Tabellenblätter müssen existieren
Sub Bildschirmaktualisierung()
Dim i As Long
Dim j As Long
MsgBox "Bitte beobachten Sie das Tabellenblatt!"
For i = 1 To 2
If i = 2 Then
Application.ScreenUpdating = False
MsgBox "Haben Sie das gesehen? Wir starten ohne Bildschirmaktualisierung."
End If
For j = 1 To 100
Worksheets(1).Activate
Worksheets(2).Activate
Next
Next
MsgBox "Der zweite Durchlauf wurde beendet!"
Application.ScreenUpdating = True
End Sub
Application.Calculation = xlCalculationManual
Automatische Berechnungen werden in Excel, beim Start, abgeschaltet. Soll also etwas berechnet werden, so muss das manuell geschehen. Dies geschieht mit der Taste F9.
Beispielcode in "Diese Arbeitsmappe":
Code:
Private Sub Workbook_Open()
Application.Calculation = xlCalculationManual
End Sub
Application.Calculation = xlCalculationAutomatic
Schliessen wir Excel, so schalten wir die automatischen Berechnungen wieder ein.
Beispielcode in "Diese Arbeitsmappe:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Calculation = xlCalculationAutomatic
End Sub
Application.CalculateBeforeSave = True
Wir wollen dass vor dem Speichern unserer Excel Datei noch berechnet wird .
Beispielcode in "Diese Arbeitsmappe:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.CalculateBeforeSave = True
End Sub
Application.DisplayAlerts = False
Bestimmte Meldungen, von Excel, werden unterdrückt. Würde man zum Beispiel eine Datei unter einem Namen abspeichern, welcher schon einmal existiert, so sagt uns das Excel sofort an. Es gibt aber Situationen wo das nicht gewünscht ist.
Beispielcode:
Code:
Sub Warnungen_abschalten()
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:="Test.xls"
End Sub
Application.Quit
Excel wird ohne Nachfrage- ohne speichern beendet
Beispielcode:
Code:
Sub excel_ohne_nachfrage_schliessen()
Application.DisplayAlerts = False
Application.Quit
End Sub
Es werden erst alle Excel Tabellen gespeichert - danach werden alle Arbeitsmappen (Excel allgemein) geschlossen.
Beispielcode:
Code:
Sub excel_ohne_nachfrage_schliessen2()
Dim wbk As Workbook
For Each wbk In Application.Workbooks
wbk.Save
Next
Application.Quit
End Sub
Application.Run
Mit diesem Befehl kann man ein Makro, welches sich in einem anderen Workbook, einer anderen Excel Datei, befindet, starten.
Beispielcode:
Code:
Sub Makro_starten()
Application.Run "Test.xls!Macro1"
End Sub
Application.Inputbox
Es handelt sich hierbei um eine Erweiterung der uns bekannten Inputbox. Man kann der Inputbox verschiedene Rückgabeparameter zuordnen:
Code:
Rückgabeparameter einer Inputbox:
- 0 = Eingabe ist eine Formel
- 1 = Eingabe ist eine Zahl
- 2 = Eingabe ist Text (Zeichenfolge)
- 3 = Eingabe ist Text und Zahl
- 4 = Eingabe ist ein logischer Wert (True oder False)
- 8 = Eingabe ist ein Zellbezug, z.B. ein Range-Objekt
- 16 = Eingabe ergibt einen Fehlerwert, z.B. ‚#N/A
- 64 = Eingabe ist eine Wertematrix
Beispielcode:
Code:
Sub Bereich_Markieren_und_loeschen()
Dim rngbereich As Range
Set rngbereich = Application.InputBox("Bitte markieren Sie den Bereich der gelöscht werden soll", "Löschen", Type:=8)
rngbereich.ClearContents
End Sub
Application.CutCopyMode = False
Weder Cut noch Copy sind im Ausschneide- oder im Kopiermodus.
Die Folge dieser Anweisung ist die Leerung der Zwischenablage und die Aufhebung des blinkenden Rahmens, den man durch Range.Copy, oder Cut, erzeugt hat.
Application.CutCopyMode = xlCopy
Ist CutCopy im Kopiermodus?
Application.CutCopyMode = xlCut
Ist CutCopy im Ausschneidemodus?
Beispielmakro hinter einem Tabellenblatt:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngBereich As Range
Set rngBereich = Range("A1:E5")
Set rngBereich = Intersect(Target, Range("A1:E5"))
If Not rngBereich Is Nothing Then
If Application.CutCopyMode = xlCopy Or Application.CutCopyMode = xlCut Then
Application.CutCopyMode = False
MsgBox "Kopieren und Ausschneiden verboten"
End If
End If
End Sub
Application.EnableEvents = False
Ein Workbook_Change-Ereignis wird nur einmal ausgeführt.
Application.Goto
Application.Goto ist im weitesten Sinne eine Art von Select. Wir können mit diesem Befehl eine Zelle, oder einen Bereich selektieren.
Mit
Code:
Application.Goto Cells(70, 1)
machen wir einen Sprung zu dieser Zelle, welche auch in einem anderen Tabellenblatt liegen könnte. Nutzen wir zusätzlich den Anhang ", scroll:=True", also:
Code:
Application.Goto Cells(70, 1), scroll:=True
wird die Zelle 70,1 auf unserem Bildschirm direkt in die linke obere Ecke gesetzt.
Einen Bereich würden wir so ansprechen:
Code:
Application.Goto Reference:=Worksheets("Tabelle1").Range("$L$72:$O$76")
Application.WorksheetFunction
Hiermit können wir Arbeitsblattfunktionen (Summe, Min, Max, etc) in einen VBA Code einbauen.
Beispielcode:
Code:
Sub rechnen()
Range("B1") = Application.WorksheetFunction.Sum(Range("A1:A100"))
End Sub
Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.