Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
760to764
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
760to764
760to764
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehlerbearbeitung

Fehlerbearbeitung
09.05.2006 13:57:12
Mabus
Hallo Community !
Folgendes Problem:
Ich lasse in einer Prozedur Werte berechnen, welche anschliessend in den Labels einer Userform angezeigt werden.
Der User kann entscheiden ob er absolute oder prozentuale Darstellung wünscht.
Nun habe ich das Problem, daß bei einigen Werten bei der prozentualen Darstellung durch Null dividiert wird, da keine Vergleichswerte oder 0 vorliegen.
In diesem Fall werden in der UserForm weiterhin die absoluten Werte angezeigt.
Duch den Befehl im Listing "On Error Resume Next" vermeide ich die Unterbrechung der Routine.
Leider lässt sich das Problem nicht mit einer Else-If-Schleife erledigen, da ich jeden Wert in einer einzelnen Zeile berechnen lassen. Somit müsste ich für jede Berechnungszeile noch eine Schleife schreiben. (Das wir bei 160 Werten sehr aufwendig)
Ich würde gerne mit dem "On Error"-Befehl und einer Variation davon arbeiten:
Falls bei der Berechnung eine DIV/0 passiert und eigentlich ein Fehler vorliegt, dann zeige in dem Label "-" (o.ä.) an.
Hat jemand dafür einen Lösungsvorschlag ? Vielen Dank für eure Hilfe !

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

Betreff
Datum
Anwender
Anzeige
AW: Fehlerbearbeitung
09.05.2006 14:06:10
Andi
Hi,
das geht folgendermaßen:

Sub t()
On Error GoTo errorhandler
'hier kommt Dein Code hin
Exit Sub
errorhandler:
If Err.numer = 11 Then
Label1.Value = "-"  'anpassen
Resume Next
Else
MsgBox "Abbruch; unbekannter Fehler"
End If
End Sub

Vergiss nich das exit sub vor dem errorhandler; sonst wird dieser am Ende immer mit abgearbeitet.
Schönen Gruß,
Andi
AW: Fehlerbearbeitung
09.05.2006 14:13:43
Mabus
Hi Andi !
Der Ansatz sieht schon vielversprechend aus. Aber mein Listing hat dieses Format:
With FORM1
.lbl1.Caption = Format([2005!M1031], "##0.0 %")
.lbl2.Caption = Format([2005!N1031], "##0.0 %")
.lbl3.Caption = Format([2005!O1031], "##0.0 %")
.lbl4.Caption = Format([2005!P1031], "##0.0 %")
...
Ich hab also das Problem die fortlaufende Nummer des Label (lbl1, lbl2, usw.) auszulesen.
Und mit einer Schleife komm ich da auch nicht weiter...
Hast Du vielleicht noch eine (weitergehende) Idee ?
Anzeige
BITTE HILFE !!!
09.05.2006 15:21:32
Mabus
siehe unten
BITTE HILFE !!! (muß heute fertig werden !)
AW: Fehlerbearbeitung
09.05.2006 17:43:40
IngGi
Hallo Mabus,
so kannst du deine Labels in einer Schleife abarbeiten und dementsprechend in der Fehlerbehandlung reagieren:

Sub Fehlerbehandlung()
Dim i As Integer
On Error GoTo Fehler
For i = 1 To FORM1.Controls.Count
If Left(FORM1.Controls(i).Name, 3) = "lbl" Then
FORM1.Controls(i).Caption = Format([2005!M1031], "##0.0 %")
End If
Next 'i
Exit Sub
Fehler:
FORM1.Controls(i).Caption = "-"
Resume Next
End Sub
Gruß Ingolf
AW: Fehlerbearbeitung
09.05.2006 18:11:02
IngGi
Hallo Mabus,
eine Korrektur ist leider erforderlich. Ich habe vergessen, den Zellbezug für die Schleife auch dynamisch zu machen. Statt der Zeile
FORM1.Controls(i).Caption = Format([2005!M1031], "##0.0 %")
nimm die folgende Zeile:
FORM1.Controls(i).Caption = Format(Sheets("2005").Range("M1031").Offset(0, i - 1), "##0.0 %")
Gruß Ingolf
Anzeige
DANKE !!!
10.05.2006 09:43:29
Mabus
Hallo Ingolf !
Vielen, vielen Dank ! Du hast mir sehr geholfen !!!!
Gruß, Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige