Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

On Error, IsError

Forumthread: On Error, IsError

On Error, IsError
14.08.2003 12:29:46
Norbert
Hallo Experten,
brauche Eure Hilfe.
Innerhalb eines Programms will ich zu einer 6-stelligen Artikelnummer aus einer Liste (2-spaltiges Range-Objekt) die zugehörige Bezeichnung lesen.
Da in der Liste jedoch auch 4-stellige Nummern auftreten können (Warengruppen), will ich, sofern der erste Abgleich per "VLookup(ArtNr ...)" zu einem Fehler führt, beim dann notwendigen zweiten Abgleich nur die ersten 4 Stellen der Artikelnummer verwenden. Erst danach sollte der Vermerk "ohne Zuordnung" als Ergebnis ausgewiesen werden.
Ich scheitere bei der Realisierung bei der Prüfung mit der IsError()-Methode, weil ich nicht TRUE als Ergebnis, sondern eine Fehlermeldung bekomme; ebenso mißlingt der Versuch über eine Fehler-Auffangroutine (OnError), weil beim zweiten vergeblichen Abgleich innerhalb der Fehlerroutine die Fehlermeldung kommt.
Was mache ich falsch, wo habe ich mich verrannt ?
Vielen Dank für Eure Mühe im voraus !
Norbert
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: On Error, IsError
14.08.2003 12:43:06
ChrisL
Hi Norbert

Ich würde 'On Error Goto ErrorHandler' o.ä. nur für 'unvorhergesehene' Fehler verwenden. In diesem Fall würde ich die Länge der Artikelnummer mit der Funktion LEN überprüfen.

If Len(String) = 6 Then
...
Exit Sub
End If

If Len(String) = 4 Then
...
Exit Sub
End If

Msgbox "Fehler"

Gruss
Chris


Anzeige
AW: On Error, IsError
14.08.2003 14:13:39
Norbert
Hallo Chris,
danke für die schnelle Antwort.
Habe mich möglicherweise nicht klar ausgedrückt. Die Artikelnummer ist immer 6-stellig.
In der Liste, gegen die ich abgleiche, sind jedoch sowohl 4-stellige als auch 6-stellige Nummern. Also muß ich die ArtNr zunächst 6-stellig abgleichen, wird keine Übereinstimmung gefunden, bilde ich aus den ersten 4 Stellen der ArtNr die Warengruppennummer und gleiche diese gegen die Liste ab. Erst wenn auch dies zu keiner Übereinstimmung führt, wird als Ergebnis der Text "ohne Zuordnung" ausgegeben.
Mit Deinem Vorschlag, so ich ihn richtig verstehe, käme ich nur weiter, wenn ich in einer Schleife die Liste abgleiche. Genau das wollte ich vermeiden und wesentlich eleganter und schneller lösen.
Gruß
Norbert


Anzeige
AW: On Error, IsError
14.08.2003 14:24:28
ChrisL
Hi Norbert

Erstmal ja, der Vorschlag von mir ist in diesem Fall nicht brauchbar.

Ich würde dir empfehlen, mit WorksheetFunction.CountIf (entspricht ZÄHLENWENN Funktion) zu ermitteln, ob die 6-stellige Artikelnummer überhaupt vorhanden ist. Falls nicht, Routine mit der 4-stelligen laufen lassen.

> Mit Deinem Vorschlag, so ich ihn richtig verstehe, käme ich nur weiter, wenn ich in einer Schleife die Liste abgleiche.

Wie suchst du denn bis jetzt, wenn nicht mit Schleife? Find?

Gruss
Chris


Anzeige
AW: On Error, IsError
14.08.2003 16:17:34
Norbert
Hi Chris,

suche bisher mit : Segment=Application.WorksheetFunction.VLookup(ArtNr,Segmentliste,2,False)
Segmentliste ist dabei das 2-spaltige Range-Objekt (1. Spalte 4- oder 6-stellige ArtNr, 2. Spalte Segment-Bezeichnung).
CountIf ist ein Ansatz, der einiges verspricht. Habe zwischenzeitlich durch Experimentieren (und kleine Pause zum Abstand gewinnen) auch einen funktionierenden Ansatz gefunden :
ich stelle "On Error Resume Next" voran, bilde die 4-stellige Nummer, gleiche ab. Falls Ergebnis ok : Exit Sub
Falls nicht, Abgleich mit 6-stelliger ArtNr : Ergebnis ok => Exit Sub, sonst Ausgabe "ohne Zuordnung".
Danke für Deine Hilfe und Hineindenken, hoffe, kann mich mal revanchieren

Norbert


Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige