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

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

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


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


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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige