Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
380to384
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
380to384
380to384
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makrostarten bei Fehler?

Makrostarten bei Fehler?
16.02.2004 14:42:56
Alexej
Hallo nochmals :)
Frage:
Ist es moeglich, zu sagen, dass wenn in der Zelle C14 ein Fehler erscheint (z.B. #div/0! oder #Name?), dann soll eine MsgBox ausgegeben werden mit einem Text, der dem Fehler angepasst ist (z.B. Fehlernummer = 3; Meldung: Falscher Name)?
Fuer euere Hilfe bin ich sehr dankbar :)
Viele Gruesse,
Alexej

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makrostarten bei Fehler?
16.02.2004 14:51:14
Alex K.
Hallo Alexej,
hier ein Lösungsansatz, musst du aber noch für deine Bedürftnisse anpassen, also um die entsprechenden Fehlermeldungen erweitern.
Den folgenden Code im VBA Editor in "DieseArbeitsmappe" kopieren.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim errText     As String
If Left(Target.Text, 1) <> "#" Then
Exit Sub
End If
Select Case LCase(Target.Text)
Case "#name?": errText = "Eine Formel bzw. definierter Name für einen Zellbereich existiert nicht bzw. wurde falsch geschrieben"
Case "#div/0!": errText = "Eine Division durch 0 ist nicht erlaubt. Überprüfen sie bitte die Formel."
Case Else:         errText = "Ein Fehler in einer Formel ist aufgetreten. Bitte überprüfen sie die Formel"
End Select
MsgBox errText, vbExclamation, "Formelfehler"
End Sub

Anzeige
Optimierung
16.02.2004 14:57:25
Alex K.
Hallo Alexej,
nimm diesen Code, der ist bezüglich der Abfrage ob Fehler optimiert.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim errText     As String
If Not Application.WorksheetFunction.IsError(Target.Value) Then
Exit Sub
End If
Select Case LCase(Target.Text)
Case "#name?": errText = "Eine Formel bzw. definierter Name für einen Zellbereich existiert nicht bzw. wurde falsch geschrieben"
Case "#div/0!": errText = "Eine Division durch 0 ist nicht erlaubt. Überprüfen sie bitte die Formel."
Case Else:         errText = "Ein Fehler in einer Formel ist aufgetreten. Bitte überprüfen sie die Formel"
End Select
MsgBox errText, vbExclamation, "Formelfehler"
End Sub

Anzeige
AW: Optimierung
16.02.2004 15:26:13
Alexej
Hi Alex :)
Danke dir fuer die Hilfe, das Makro funktionert auch wunderbar, aber nur wenn man die Zelle aktiviert und dann aus der Zelle wieder rausgeht... Die Fehlermeldung sollte aber erscheinen, sobald sich ein Fehler in der Zelle befindet, der Benutzer soll sie gar nicht anfassen und so...
Viele Gruesse,
Alexej
Jetzt aber :-)
16.02.2004 16:14:59
Alex K.
Hallo Alexej,
also ein Fehler kann auftreten, wenn das Blatt berechnet wird. Also lösche meinen "alten" Code und verwende diesen Code (wieder in "DieseArbeitsmappe"). Dieser gibt bei JEDER Neuberechnung des Blattes die Meldungen aus.
Aber Vorsicht, damit kann es unter Umständen zu sehr vielen Fehlermeldungen kommen, wenn z.b. 100 Spalten in Abhängigkeit von einer Zelle berechnet werden. Wird nun in dieser Zelle ein Wert eingetragen, der zu Fehlern in den 100 Zellen führt, so wird 100x die Fehlermeldung ausgegeben. Deshalb hat der Anwender die Möglichkeit, vorher abzubrechen.

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim errText     As String
Dim col         As Long
Dim row         As Long
Dim actCell     As Range
Dim ret         As Integer
With ActiveSheet
For col = 1 To .UsedRange.Columns.Count
For row = 1 To .Cells(.Rows.Count, col).End(xlUp).row
Set actCell = .Cells(row, col)
If Application.WorksheetFunction.IsError(actCell.Value) Then
Select Case LCase(actCell.Text)
Case "#name?": errText = "Eine Formel bzw. definierter Name für einen Zellbereich existiert nicht bzw. wurde falsch geschrieben"
Case "#div/0!": errText = "Eine Division durch 0 ist nicht erlaubt. Überprüfen sie bitte die Formel."
Case Else:         errText = "Ein Fehler in einer Formel ist aufgetreten. Bitte überprüfen sie die Formel"
End Select
ret = MsgBox(errText & vbNewLine & "Fehler in Zelle: " & actCell.Address & _
vbNewLine & "Weiter nach Fehler suchen?", _
vbExclamation + vbYesNo, "Formelfehler")
If ret = vbNo Then
actCell.Activate
Exit Sub
End If
End If
Next row
Next col
End With
End Sub

Falls diese Möglichkeit dir auch nicht zusagt, so kopiere das folgende Makro in ein neues Modul (im VBA-Editor über Menü "Einfügen -> Modul). Du kannst dann das Makro auf einen Menübutton in einer Symbolleiste legen oder über einen Shortcut aufrufen lassen.

Private Sub Fehlersuche()
Dim errText     As String
Dim col         As Long
Dim row         As Long
Dim actCell     As Range
Dim ret         As Integer
With ActiveSheet
For col = 1 To .UsedRange.Columns.Count
For row = 1 To .Cells(.Rows.Count, col).End(xlUp).row
Set actCell = .Cells(row, col)
If Application.WorksheetFunction.IsError(actCell.Value) Then
Select Case LCase(actCell.Text)
Case "#name?": errText = "Eine Formel bzw. definierter Name für einen Zellbereich existiert nicht bzw. wurde falsch geschrieben"
Case "#div/0!": errText = "Eine Division durch 0 ist nicht erlaubt. Überprüfen sie bitte die Formel."
Case Else:         errText = "Ein Fehler in einer Formel ist aufgetreten. Bitte überprüfen sie die Formel"
End Select
ret = MsgBox(errText & vbNewLine & "Fehler in Zelle: " & actCell.Address & _
vbNewLine & "Weiter nach Fehler suchen?", _
vbExclamation + vbYesNo, "Formelfehler")
If ret = vbNo Then
actCell.Activate
Exit Sub
End If
End If
Next row
Next col
End With
End Sub

Anzeige
Daaankeee :)))
17.02.2004 07:15:04
Alexej
Dank dir Alex, du hast mir sehr geholfen :)
Viele Gruesse,
Alexej
AW: Makrostarten bei Fehler?
16.02.2004 14:51:45
soendi
hallo alexej

Sub workbook_change()
if Tabelle1.Cells(1,1)="wahr" then _
'dein makro _
else exit sub
End Sub

zelle a1: =istfehler(bezugszelle)
alles klar?
gruss
soendi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige