VBA – Excel – Automatische Formelberechnung ein- und ausschalten

Bei komplexen Excel-Tabellen ist es oft nachteilig, wenn während des Schreibens von Daten in das Tabellenblatt die Datenberechnung aktiv ist. S-Verweise und andere Regeln werden mit jedem neuen Datensatz ausgeführt und verlangsamen den Generierungsprozess.

Excel bietet dafür an, die Formelberechnung einfach manuell zu deaktivieren:

Formelberechnung Ein- und Ausschalten

Um die Berechnung vor der automatischen Tabellenbefüllung mit VBA Ein- und Auszuschalten, gibt es ein einfaches Kommando in VBA:

' Einschalten der Formelberechnung

 Application.Calculation = xlCalculationAutomatic 

' Ausschalten der Formelberechnung

 Application.Calculation = xlCalculationManual 

VBA – Neue Email öffnen (nicht senden)

Um eine neue E-Mail zu erstellen aus Excel heraus, kann ein einfache OLE-Objekt erzeugt und angezeigt werden. Vielen Dank wie so oft an Herberts VBA Forum (Quelle)

Sub Mail(ByVal d As String)
    Dim olApp As Object
    Set olApp = CreateObject("Outlook.Application")
    With olApp.CreateItem(0)
        'Empfanger
        .Recipients.Add "empfaenger@domain.de"
        'Betreff
        .Subject = "Betreff der E-Mail"
        'Nachricht
        .Body = "Inhalt der E-Mail"
        'Lesebestätigung aus
        .ReadReceiptRequested = False
        'Anhang
        .Attachments.Add d
        .send

    End With
    Set olApp = Nothing
End Sub

VBA – Datum vergleichen – Tage zwischen zwei Datumsvariablen

Um Datum zu vergleichen, verwende ich bei VBA die Methode DateDiff, mit der ich mit der folgenden Syntax zwei Datumsvariablen vergleichen kann:

DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] ) 

Für Intervall wird im Excel-üblichen Format angegeben, welchen zeitintervall man haben möchte:

EinstellungBeschreibung
yyyyJahr
qQuartal
mMonat
yTag des Jahres
dTag
wWochentag
wwWoche
hStunde
nMinute
sZweiter

Mein Beispiel im Quelltext sieht so aus:

Dim dateDiffHersteller As Integer
' "d" steht für Intervall Tag
dateDiffHersteller = DateDiff("d", dateStart, dateEnd)

Quelle: https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/datediff-function