
Fehler elegant abfangen: Ein tiefgehender Blick auf ein IFERROR-Wrapper Makro für Excel
Einführung
Die WENNFEHLER-Funktion in Excel spielt eine entscheidende Rolle bei der Fehlerbehandlung in der Datenanalyse. Mit ihrer Hilfe können Formeln so angepasst werden, dass sie bei Auftreten eines Fehlers einen definierten Wert zurückgeben. Dies ist besonders nützlich, um die Stabilität von Berechnungen sicherzustellen und störende Fehlermeldungen wie #DIV/0!
oder #N/A
zu vermeiden.
Mit einem IFERROR-Wrapper Makro könnte man diesen Prozess automatisieren. Es soll einen Bereich von Zellen durchsuchen und die WENNFEHLER-Funktion hinzufügen, wenn sie noch nicht vorhanden ist. Dies kann Zeit sparen und die Effizienz erhöhen, insbesondere bei umfangreichen Tabellen.
In diesem Artikel lernen Sie:
- Wie Sie ein IFERROR-Wrapper Makro mit VBA erstellen und optimieren.
Die WENNFEHLER-Funktion verstehen
Die WENNFEHLER-Funktion in Excel dient dazu, Fehler in Formeln abzufangen und eine spezifizierte Alternative zurückzugeben. Die Syntax dieser Funktion lautet:
=WENNFEHLER(wert, wert_falls_fehler)
Dabei steht wert für den Ausdruck oder die Formel, die einen Fehler verursachen könnte, und wert_falls_fehler für den Wert, der zurückgegeben werden soll, wenn ein Fehler auftritt.
Im englischen Excel heißt diese Funktion IFERROR
.
Beispiele zur Veranschaulichung:
=WENNFEHLER(100/B12;0)
Diese Formel vermeidet eine Division durch Null und gibt stattdessen 0 aus.
=WENNFEHLER(SVERWEIS(A2; B:C; 2; FALSCH); "Wert nicht gefunden")
Kann der Wert aus A2 nicht in der Spalte B gefunden werden, ist der Output "Wert nicht gefunden".
Einführung in VBA und Makros in Excel
VBA (Visual Basic for Applications) ist eine Programmiersprache, die in Microsoft Office-Anwendungen wie Excel integriert ist. Sie ermöglicht die Automatisierung von Aufgaben und die Erstellung benutzerdefinierter Funktionen.
Grundlegende Konzepte der Makroprogrammierung in Excel
- Makros: Aufgezeichnete oder programmierte Befehlsfolgen, die wiederholt ausgeführt werden können.
- Editor: Der VBA-Editor in Excel dient zur Erstellung und Bearbeitung von Makros.
- Objekte und Eigenschaften: In VBA werden Excel-Elemente wie Zellen oder Arbeitsblätter als Objekte behandelt, die Eigenschaften und Methoden besitzen.
Vorteile der Automatisierung von Aufgaben mit VBA
- Zeiteffizienz: Wiederkehrende Aufgaben können automatisiert werden, was erheblich Zeit spart.
- Fehlerreduktion: Durch Automatisierung wird das Risiko menschlicher Fehler minimiert.
- Flexibilität: Benutzerdefinierte Lösungen können entwickelt werden, die spezifischen Anforderungen gerecht werden.
Erstellung eines IFERROR-Wrapper Makros: Ein Schritt-für-Schritt-Leitfaden
Dieser Abschnitt führt Sie durch die Erstellung eines VBA-Makros, das automatisch bestehende Formeln in einem ausgewählten Zellbereich mit der WENNFEHLER-Funktion umhüllt.
Darüber hinaus kann dieses Makro auch ins Excel Menüband hinzugefügt werden, um den Zugriff auf diese Funktionen zu optimieren.
Neues Modul erstellen
Ich erstelle ein neues Modul in meiner persönllichen Arbeitsmappe und füge dort ein leeres Sub ein.

Option Explicit
Sub IRERRORWrapper()
End Sub
Mit WENNFEHLER Umhüllen
Die Hauptfunktionalität soll ja die Umhüllung mit WENNFEHLER sein, deshalb füge ich das als erstes ein.
Option Explicit
Sub IFERRORWrapper()
Dim formulaText As String
formulaText = ActiveCell.Formula
ActiveCell.Formula = "=IFERROR(" & formulaText & ", """")"
End Sub
Was passiert hier? Ich definiere zunächst die Variable formulaText
, der Wert der Variable soll der momentan ausgewählten Zelle entsprechen. Diese Formel soll in eine WENNFEHLER Formel eingefügt werden. Hierbei muss die englische Variante der Formel genommen werden.
Beim ersten Test scheitert dieser Weg natürlich, wählt man Zelle mit dem Inhalt 123
aus, wird daraus beim Ausführen des Makros =WENNFEHLER(123; "")
. Aus abc
wird =WENNFEHLER(@abc; "")
und bei =SUMME(A1:A10)
stürzt das Modul ab. Das ist jedoch die Funktionalität, die ich nicht haben möchte. Die Zellen mit 123
oder abc
sollen überhaupt nicht verändert werden, sondern nur eine Zelle mit einer Formel drin. Eine Abfrage, ob eine Zelle eine Formel enthält, kann man mit dem Ausdruck hasFormula
prüfen. Des Weiteren versucht das Makro den gesamten Zellinhalt zu nehmen und mit WENNFEHLER zu umhüllen. Also wird aus =SUMME(A1:A10)
theoretisch =WENNFEHLER(=SUMME(A1:A10);"")
, das ist ein Gleichheitszeichen zu viel. Das kann ich entfernen, indem ich die Formel erst ab dem zweiten Zeichen in die Variable kopiere.
Option Explicit
Sub IFERRORWrapper()
Dim formulaText As String
If ActiveCell.HasFormula Then
formulaText = Mid(ActiveCell.Formula, 2)
ActiveCell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
End Sub
Und damit ist die Grundfunktionalität gegeben. 123
bleibt 123
, abc
bleibt abc
, =SUMME(A1)
wird zu =WENNFEHLER(SUMME(A1);"")
.
Gesamten Zellbereich verwenden
Momentan wird nur die aktive Zelle verändert. Auch wenn man einen Bereich mit mehreren Zellen auswählt, verändert wird nur eine. Dieses Verhalten kann man mit einer For Each Schleife ändern:
Option Explicit
Sub IFERRORWrapper()
Dim cell As Range
Dim formulaText As String
For Each cell In Selection.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
Next cell
End Sub
Doppelter WENNFEHLER WENNFEHLER
Ist der Inhalt einer Zelle =WENNFEHLER(SUMME(A1);"")
wird daraus =WENNFEHLER(WENNFEHLER(SUMME(A1);"");"")
. Das geht dann auch immer weiter. Das bringt irgendwie nicht wirklich viel, außer man versucht nach und nach verschiedene Ergebnisse durchzugehen, bis man auf eins ohne Fehler stößt. Für mein Makro nehme ich den Fall dennoch raus:
Option Explicit
Sub IFERRORWrapper()
Dim cell As Range
Dim formulaText As String
For Each cell In Selection.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not formulaText Like "IFERROR(*)" Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
End If
Next cell
End Sub
Dadurch bleibt eine Zelle mit =WENNFEHLER(SUMME(A1);"")
unverändert. Eine Zelle mit dem Wert =WENNFEHLER(SUMME(A1);"") + 1
würde jedoch verändert werden. Eine Randerscheinung wäre jedoch, dass auch =WENNFEHLER(1;"")+(1+1)
und =WENNFEHLER(1;"")+WENNFEHLER(1;"")
nicht angepasst werden, weil sie mit =WENNFEHLER
beginnen und mit einer Klammer aufhören. Es gäbe jetzt die Möglichkeit das aus Gründen der Einfachheit so zu lassen oder man zählt die Klammern in der Formel, um herauszufinden, ob es hinter der WENNFEHLER-Funktion in der Formel noch weitergeht.
Option Explicit
Sub IFERRORWrapper()
Dim cell As Range
Dim char As String
Dim formulaText As String
Dim i As Long
Dim openParenCount As Long
For Each cell In Selection.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not formulaText Like "IFERROR(*)" Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
Else
openParenCount = 0
For i = 1 To Len(formulaText)
char = Mid(formulaText, i, 1)
If char = "(" Then
openParenCount = openParenCount + 1
ElseIf char = ")" Then
openParenCount = openParenCount - 1
If openParenCount = 0 Then
If i < Len(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
Exit For
End If
End If
Next i
End If
End If
Next cell
End Sub
Im ersten Moment scheint das zu funktionieren, jedoch könnten sich auf Klammern in dem Fehler Parameter der Funktion befinden: =WENNFEHLER(SUMME(A1:A10); "Es gibt einen Fehler :)")
Um das auch zu beachten, muss der Code durch eine Prüfung erweitert werden, ob wir uns momentan innerhalb eines Strings befinden.
Option Explicit
Sub IFERRORWrapper()
Dim cell As Range
Dim char As String
Dim formulaText As String
Dim i As Long
Dim inString As Boolean
Dim openParenCount As Long
For Each cell In Selection.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not formulaText Like "IFERROR(*" Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
Else
openParenCount = 0
For i = 1 To Len(formulaText)
char = Mid(formulaText, i, 1)
If char = """" Then
inString = Not inString
ElseIf Not inString Then
If char = "(" Then
openParenCount = openParenCount + 1
ElseIf char = ")" Then
openParenCount = openParenCount - 1
If openParenCount = 0 Then
If i < Len(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
Exit For
End If
End If
End If
Next i
End If
End If
Next cell
End Sub
Damit ist die Grundfunktionalität gegeben.
Refactoring in kleinere Bestandteile
Würde man versuchen all die Funktionalität in ein großes Sub zu packen, wird es mit der Zeit sehr unübersichtlich, weshalb ich gerne die Prüfung, ob die Formel bereits von einer WENNFEHLER-Funktion umschlossen ist, in eine einzelne Funktion auslagern möchte. Ebenso soll die Verarbeitung der einzelnen Zellen in eine eigene Funktion.
Option Explicit
Public Sub IFERRORWrapper()
ProcessRange Selection
Exit Sub
End Sub
Private Function ProcessRange(ByVal rng As Range)
Dim cell As Range
Dim formulaText As String
For Each cell In rng.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not IsAlreadyWrapped(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
End If
Next cell
End Function
Private Function IsAlreadyWrapped(formulaText As String) As Boolean
Dim i As Long
Dim inString As Boolean
Dim openParenCount As Long
Dim char As String
If Not formulaText Like "IFERROR(*)" Then
IsAlreadyWrapped = False
Exit Function
End If
For i = 1 To Len(formulaText)
char = Mid(formulaText, i, 1)
Select Case char
Case """"
inString = Not inString
Case "("
If Not inString Then openParenCount = openParenCount + 1
Case ")"
If Not inString Then
openParenCount = openParenCount - 1
If openParenCount = 0 Then
IsAlreadyWrapped = (i = Len(formulaText))
Exit Function
End If
End If
End Select
Next i
IsAlreadyWrapped = False
End Function
Dadurch wird es leichter einzelne Bestandteile zu ändern.
Errorhandler hinzufügen
Damit man bei einem Fehler im Ablauf der Funktion nicht die Standard-Benachrichtigung mit dem Link zum Debugger bekommt, sondern man den Text selbst festlegen kann, bietet es sich an einen Errorhandler in den Funktionsablauf einzubauen.
Option Explicit
Public Sub IFERRORWrapper()
On Error GoTo ErrorHandler
ProcessRange Selection
Exit Sub
ErrorHandler:
MsgBox "An error occurred: " & Err.Description, vbCritical, "IFERROR Wrapper"
End Sub
Private Function ProcessRange(ByVal rng As Range)
Dim cell As Range
Dim formulaText As String
For Each cell In rng.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not IsAlreadyWrapped(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
End If
Next cell
End Function
Private Function IsAlreadyWrapped(formulaText As String) As Boolean
Dim i As Long
Dim inString As Boolean
Dim openParenCount As Long
Dim char As String
If Not formulaText Like "IFERROR(*)" Then
IsAlreadyWrapped = False
Exit Function
End If
For i = 1 To Len(formulaText)
char = Mid(formulaText, i, 1)
Select Case char
Case """"
inString = Not inString
Case "("
If Not inString Then openParenCount = openParenCount + 1
Case ")"
If Not inString Then
openParenCount = openParenCount - 1
If openParenCount = 0 Then
IsAlreadyWrapped = (i = Len(formulaText))
Exit Function
End If
End If
End Select
Next i
IsAlreadyWrapped = False
End Function
Bildschirmaktualisierung ausschalten
Da wir nun einen Errorhandler haben, können wir während des Makroablaufs die Bildschirmaktualisierung ausschalten sowie die automatischen Berechnungen deaktivieren.
Durch das Deaktivieren der Bildschirmaktualisierung (ScreenUpdating
) und der automatischen Berechnung (Calculation
) während der Ausführung des Makros, lässt sich die Performance deutlich steigern. Nach Abschluss des Makros oder bei einem Fehler werden diese Funktionen wieder aktiviert.
In diesem Makro ist das nicht zwingend notwendig, dennoch füge ich es dazu. Vielleicht führt es zu einer schnelleren Bearbeitung, wenn man eine große Menge an Zellen auswählt.
Option Explicit
Public Sub IFERRORWrapper()
On Error GoTo ErrorHandler
SetApplicationSettings False
ProcessRange Selection
SetApplicationSettings True
Exit Sub
ErrorHandler:
MsgBox "An error occurred: " & Err.Description, vbCritical, "IFERROR Wrapper"
SetApplicationSettings True
End Sub
Private Function ProcessRange(ByVal rng As Range)
Dim cell As Range
Dim formulaText As String
For Each cell In rng.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not IsAlreadyWrapped(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
End If
Next cell
End Function
Private Function IsAlreadyWrapped(formulaText As String) As Boolean
Dim i As Long
Dim inString As Boolean
Dim openParenCount As Long
Dim char As String
If Not formulaText Like "IFERROR(*)" Then
IsAlreadyWrapped = False
Exit Function
End If
For i = 1 To Len(formulaText)
char = Mid(formulaText, i, 1)
Select Case char
Case """"
inString = Not inString
Case "("
If Not inString Then openParenCount = openParenCount + 1
Case ")"
If Not inString Then
openParenCount = openParenCount - 1
If openParenCount = 0 Then
IsAlreadyWrapped = (i = Len(formulaText))
Exit Function
End If
End If
End Select
Next i
IsAlreadyWrapped = False
End Function
Private Sub SetApplicationSettings(enable As Boolean)
With Application
.ScreenUpdating = enable
.Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
Selbst wenn das Makro wegen eines Fehlers abgebrochen wird, haben wir im Errorhandler die Anweisung die normalen Einstellungen wieder herzustellen.
Auswahl prüfen
Wir können eine Prüfung einbauen, um zu schauen, ob überhaupt irgendwas ausgewählt ist. Falls nicht, sollte eine gesonderte Meldung erscheinen.
Option Explicit
Public Sub IFERRORWrapper()
Dim selectedRange As Range
On Error GoTo ErrorHandler
Set selectedRange = GetSelectedRange()
If selectedRange Is Nothing Then Exit Sub
SetApplicationSettings False
ProcessRange selectedRange
SetApplicationSettings True
Exit Sub
ErrorHandler:
MsgBox "An error occurred: " & Err.Description, vbCritical, "IFERROR Wrapper"
SetApplicationSettings True
End Sub
Private Function GetSelectedRange() As Range
If TypeName(Selection) <> "Range" Then
MsgBox "Bitte wählen Sie zunächst einen Bereich aus.", vbExclamation, "IFERROR Wrapper"
Set GetSelectedRange = Nothing
Else
Set GetSelectedRange = Selection
End If
End Function
Private Function ProcessRange(ByVal rng As Range)
Dim cell As Range
Dim formulaText As String
For Each cell In rng.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not IsAlreadyWrapped(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", """")"
End If
End If
Next cell
End Function
Private Function IsAlreadyWrapped(formulaText As String) As Boolean
Dim i As Long
Dim inString As Boolean
Dim openParenCount As Long
Dim char As String
If Not formulaText Like "IFERROR(*)" Then
IsAlreadyWrapped = False
Exit Function
End If
For i = 1 To Len(formulaText)
char = Mid(formulaText, i, 1)
Select Case char
Case """"
inString = Not inString
Case "("
If Not inString Then openParenCount = openParenCount + 1
Case ")"
If Not inString Then
openParenCount = openParenCount - 1
If openParenCount = 0 Then
IsAlreadyWrapped = (i = Len(formulaText))
Exit Function
End If
End If
End Select
Next i
IsAlreadyWrapped = False
End Function
Private Sub SetApplicationSettings(enable As Boolean)
With Application
.ScreenUpdating = enable
.Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
Variabler Wert falls Fehler
Momentan ist der Wert falls Fehler der mit dem Makro erstellen immer ein leerer String (""
). Dies kann man anpassen, indem man die Zeile cell.Formula = "=IFERROR(" & formulaText & ", """")"
im Code ändert. Ich hätte jedoch gerne die Möglichkeit, dass ich gefragt werde, was als Fehlerwert genutzt wird.
Dafür brauche ich zunächst eine InputBox:
Private Function GetErrorValue() As String
Dim userInput As String
userInput = InputBox("Geben Sie den Wert ein, der im Falle eines Fehlers zurückgegeben werden soll:", "IFERROR_Wrapper", """""")
GetErrorValue = UserInput
End Function
Diesen Wert gebe ich an die Hauptfunktion weiter:
Public Sub IFERRORWrapper()
Dim selectedRange As Range
Dim errorValue As String
On Error GoTo ErrorHandler
Set selectedRange = GetSelectedRange()
If selectedRange Is Nothing Then Exit Sub
errorValue = GetErrorValue()
If errorValue = "" Then Exit Sub
SetApplicationSettings False
ProcessRange selectedRange, errorValue
SetApplicationSettings True
Exit Sub
ErrorHandler:
MsgBox "An error occurred: " & Err.Description, vbCritical, "IFERROR Wrapper"
SetApplicationSettings True
End Sub
Und ich nutze diesen in der Prozedur.
Private Sub ProcessRange(ByVal rng As Range, ByVal errorValue As String)
Dim cell As Range
Dim formulaText As String
For Each cell In rng.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not IsAlreadyWrapped(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", " & errorValue & ")"
End If
End If
Next cell
End Sub
Führt man das aus, merkt man, dass es nur mit dem Standardwert oder numerischen Werten richtig funktioniert, andere Eingaben jedoch in einem Fehler enden (z.B. =SUMME(A1)
) oder ein @
zusätzlich erscheint. Wir brauchen eine zusätzliche Funktion, die die Eingabe verarbeitet.
Private Function GetErrorValue() As String
Dim userInput As String
userInput = InputBox("Geben Sie den Wert ein, der im Falle eines Fehlers zurückgegeben werden soll:", "IFERROR_Wrapper", "")
GetErrorValue = FormatErrorValue(userInput)
End Function
Private Function FormatErrorValue(value As String) As String
value = Trim(value)
Select Case True
Case IsNumeric(value)
FormatErrorValue = value
Case Left(value, 1) = "="
FormatErrorValue = Mid(value, 2)
Case Else
FormatErrorValue = """" & Replace(value, """", """""") & """"
End Select
End Function
Gibt man eine Formel ein, muss sie auf Englisch eingegeben werden, damit sie als solche erkannt wird, =SUM(A1)
statt =SUMME(A1)
. Meiner Meinung nach hat sich Microsoft keinen Gefallen damit getan, die Formeln zu übersetzen, irgendwie bringt das mehr Probleme als Vorteile.
Gibt man Apfel
ein, wird die Eingabe automatisch zu "Apfel"
umgewandelt. Es könnte jedoch auch sein, dass ich einen benannten Bereich habe, der so heißt. Dafür baue ich dann auch einen Check ein.
Private Function FormatErrorValue(value As String) As String
value = Trim(value)
Select Case True
Case IsNumeric(value)
FormatErrorValue = value
Case Left(value, 1) = "="
FormatErrorValue = Mid(value, 2)
Case IsValidNameOrReference(value)
FormatErrorValue = value
Case Else
FormatErrorValue = """" & Replace(value, """", """""") & """"
End Select
End Function
Private Function IsValidNameOrReference(value As String) As Boolean
On Error Resume Next
IsValidNameOrReference = Not IsError(Evaluate(value))
On Error GoTo 0
End Function
Das Modul entspricht nun größtenteils meiner Vorstellung.
Option Explicit
Public Sub IFERRORWrapper()
Dim selectedRange As Range
Dim errorValue As String
On Error GoTo ErrorHandler
Set selectedRange = GetSelectedRange()
If selectedRange Is Nothing Then Exit Sub
errorValue = GetErrorValue()
If errorValue = "" Then Exit Sub
SetApplicationSettings False
ProcessRange selectedRange, errorValue
SetApplicationSettings True
Exit Sub
ErrorHandler:
MsgBox "An error occurred: " & Err.Description, vbCritical, "IFERROR Wrapper"
SetApplicationSettings True
End Sub
Private Function GetSelectedRange() As Range
If TypeName(Selection) <> "Range" Then
MsgBox "Bitte wählen Sie zunächst einen Bereich aus.", vbExclamation, "IFERROR Wrapper"
Set GetSelectedRange = Nothing
Else
Set GetSelectedRange = Selection
End If
End Function
Private Function GetErrorValue() As String
Dim userInput As String
userInput = InputBox("Geben Sie den Wert ein, der im Falle eines Fehlers zurückgegeben werden soll:", "IFERROR_Wrapper", "")
GetErrorValue = FormatErrorValue(userInput)
End Function
Private Function FormatErrorValue(value As String) As String
value = Trim(value)
Select Case True
Case IsNumeric(value)
FormatErrorValue = value
Case Left(value, 1) = "="
FormatErrorValue = Mid(value, 2)
Case IsValidNameOrReference(value)
FormatErrorValue = value
Case Else
FormatErrorValue = """" & Replace(value, """", """""") & """"
End Select
End Function
Private Function IsValidNameOrReference(value As String) As Boolean
On Error Resume Next
IsValidNameOrReference = Not IsError(Evaluate(value))
On Error GoTo 0
End Function
Private Sub ProcessRange(ByVal rng As Range, ByVal errorValue As String)
Dim cell As Range
Dim formulaText As String
For Each cell In rng.Cells
If cell.HasFormula Then
formulaText = Mid(cell.Formula, 2)
If Not IsAlreadyWrapped(formulaText) Then
cell.Formula = "=IFERROR(" & formulaText & ", " & errorValue & ")"
End If
End If
Next cell
End Sub
Private Function IsAlreadyWrapped(formulaText As String) As Boolean
Dim i As Long
Dim inString As Boolean
Dim openParenCount As Long
Dim char As String
If Not formulaText Like "IFERROR(*)" Then
IsAlreadyWrapped = False
Exit Function
End If
For i = 1 To Len(formulaText)
char = Mid(formulaText, i, 1)
Select Case char
Case """"
inString = Not inString
Case "("
If Not inString Then openParenCount = openParenCount + 1
Case ")"
If Not inString Then
openParenCount = openParenCount - 1
If openParenCount = 0 Then
IsAlreadyWrapped = (i = Len(formulaText))
Exit Function
End If
End If
End Select
Next i
IsAlreadyWrapped = False
End Function
Private Sub SetApplicationSettings(enable As Boolean)
With Application
.ScreenUpdating = enable
.Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
Fazit
Die Implementierung eines IFERROR-Wrapper Makros bietet bedeutende Vorteile für die Datenintegrität und Effizienz in Excel. Durch die Automatisierung des Prozesses, Formeln mit IFERROR zu umhüllen, sparen Sie Zeit und reduzieren das Risiko von Fehlern, die Ihre Analysen verfälschen könnten.
Vorteile des IFERROR-Makros
- Verbesserte Datenintegrität: Fehlerhafte Berechnungen werden vermieden, was zu verlässlicheren Ergebnissen führt.
- Erhöhte Effizienz: Zeitaufwendiges manuelles Editieren wird durch automatisierte Prozesse ersetzt.
- Flexibilität: Anpassbar an verschiedene Szenarien und Anforderungen.