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

Find-Methode (Rückgabewert)

Find-Methode (Rückgabewert)
12.09.2002 17:18:26
Oliver
Hallo,
ich möchte den Rückgabewert einer Suche überprüfen, wenn nichts gefunden wird, soll ein bestimmert Programmteil ausgeführt werden.

Hier mein Vorschlag, der nicht funktioniert:

Do While Worksheets("Hallo").Find(What:="=MID(Text,1,intLang)", LookIn:=xlValues) <> Nothing

intLang = intLang - 1

Loop

Die Fehlermeldung erscheint bei "Nothing", was ich nicht verstehe, da laut Hilfe die Find-Methode eben "Nothing" zurückgibt, wenn sie nichts findet.

Jemand ne Idee?

:O)liver

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Find-Methode (Rückgabewert)
12.09.2002 17:42:54
Jürgen
Hallo Oliver.

Ich glaube da sind zwei Probleme in den Zeilen.
Zum einen sollte die Suche in einem Range passieren, dann sieht das so aus:

Do While Not (Worksheets("Hallo").Cells.Find( _
What:="=MID(Text,1,intLang)", LookIn:=xlValues) Is Nothing)
intLang = intLang - 1
Loop

Dann solltest du jedoch beachten, daß die Find-Methode kreiselt, d.h., daß sie nach der zuletzt gefundenen Zelle wieder von vorne mit der Suche beginnt. Hierzu die Zeilen aus der Hilfe:

Ich hoffe, daß das hilft.

Gruß
Jürgen

Re: Find-Methode (Rückgabewert)
12.09.2002 19:48:40
Hajo_Zi
Hallo Oliver

ich löse suchen meist nach folgenden Prinzip

Gruß Hajo

Anzeige
Re: Find-Methode (Rückgabewert)
13.09.2002 09:30:24
Oliver
Hi Hajo,

Ich erhalte, wenn ich Deinen Makro aus Deiner Antwort ausführe einen Laufzeitfehler '40036', und zwar bleibt mir das Makro in der Zeile "Set Bereich = ..." stehen.

Oliver

Re: Find-Methode (Rückgabewert)
13.09.2002 16:20:43
Hajo_Zi
Hallo Oliver

das kann aber nicht an dem Makro liegen, das läuft fehlerfrei.

Hat Deine Tabelle den Namen "Adressen"??

Oder hast Du nicht das Original Makro genommen???#

Wie sieht Dein Makro dann jetzt aus???

Gruß Hajo

Re: Find-Methode (Rückgabewert)
13.09.2002 17:18:18
Oliver
Tja, ähh, also...

Den Tabellennamen hab ich auf meinen angepasst, und ja, ich habe das Original hier aus dem Forum rauskopiert und bei mir eingefügt.
Wie mein Makro jetzt aussieht? Zumindest funktioniert es, bin aber noch mitten am enwickeln, hier mal ein Zwischenstand:

Sub Suchabgleich()
'
' SuchAbgleich Makro
' Makro am 12.09.02 von Oliver aufgezeichnet
'
' Tastenkombination: Strg+Umschalt+S
'

' Variablendeklaration:
Dim Zelle As Variant ' Zellenadresse
Dim intLang As Long ' Länge einer Nummer (Stellenanzahl)
Dim zaehler As Long ' Zählvariable für Schleifendurchgänge
Dim xGesucht As Variant ' Vorwahl
Dim xZwischen As Variant ' Nummer komplett im long-Format
Dim xKopf As Variant ' Kopfnummer
Dim Ergebnis As Variant ' Ergebnisvariable, in der die Ausgabenummer gespeichert wird
Dim Bereich As Range ' Range zum definieren von Suchspalten, -bereichen etc.
Dim suchBereich As Variant ' Bereichadresse zur Einschränkung des Suchbereichs


' Aufbereitung der Ausgangsdaten
'
' Länderkennzeichen und Telefonnummer werden verknüpft

zaehler = 3

Do
Zelle = "$C$" + Mid(Str(zaehler), 2, Len(Str(zaehler) - 1))
Sheets("Ausgangsdaten").Range(Zelle).Activate
ActiveCell.Value = ActiveCell.Offset(0, -2).Value & Mid(Str(ActiveCell.Offset(0, -1).Value), 2, Len(Str(ActiveCell.Offset(0, -1).Value) - 1))
zaehler = zaehler + 1
Loop While ActiveCell.Value <> "0"

ActiveCell.Value = Null

' Vergleich
'
'


' Suche
'
' Ausgangsnummer + Länderkennzeichen werden so lange um eine Stelle verkürzt,
' bis eine Vorwahl gefunden wird.

zaehler = 3

Do
Zelle = "$D$" + Mid(Str(zaehler), 2, Len(Str(zaehler) - 1))
Sheets("Ausgangsdaten").Range(Zelle).Activate
intLang = Len(ActiveCell.Offset(0, -1).Value)
xGesucht = Mid(ActiveCell.Offset(0, -1).Value, 1, intLang)
xZwischen = xGesucht
If xGesucht = "" Then Exit Sub

Select Case Mid(xGesucht, 1, 2)
Case "AT"
suchBereich = "E2:E2497"
Case "BE"
suchBereich = "E2498:E2556"
Case "CH"
suchBereich = "E2557:E2620"
Case "DE"
suchBereich = "E2621:E7879"
Case "DK"
suchBereich = "E7880:E7888"
Case "ES"
suchBereich = "E7889:E7982"
Case "FI"
suchBereich = "E:E"
Case "FR"
suchBereich = "E:E"
Case "GB"
suchBereich = "E:E"
Case "IE"
suchBereich = "E:E"
Case "IT"
suchBereich = "E:E"
Case "LU"
suchBereich = "E:E"
Case "NL"
suchBereich = "E:E"
Case "NO"
suchBereich = "E:E"
Case "PT"
suchBereich = "E:E"
Case "SE"
suchBereich = "E:E"
End Select

Sheets("Referenz").Activate

With Worksheets("Referenz")
Set Bereich = Range(suchBereich).Find(What:=xGesucht, LookIn:=xlValues)
Do While (Bereich Is Nothing) And (xGesucht <> "")
intLang = intLang - 1
xGesucht = Mid(xGesucht, 1, intLang)
Set Bereich = Range(suchBereich).Find(What:=xGesucht, LookIn:=xlValues)
Loop
End With

zaehler = zaehler + 1

' Formatierte Ausgabe der Vorwahl in Ergebnisvariable
'
' Gefundene Vorwahl wird ohne Länderkennzeichen ausgegeben.
' Format: "(0" + Nummer ohne Länderkennzeichen + ")"
' Außer: Länderkennzeichen ist ES, IT oder SE, dann
' "(" + Nummer ohne Länderkennzeichen + ")"

Sheets("Ausgangsdaten").Activate
intLang = Len(xGesucht) - 2
If intLang <= 0 _
Then Ergebnis = "Keine Vorwahl gefunden!!!" _
Else Select Case Mid(xGesucht, 1, 2)
Case "ES", "IT", "SE"
Ergebnis = "(" & Mid(xGesucht, 3, intLang) & ")"
Case Else
Ergebnis = "(0" & Mid(xGesucht, 3, intLang) & ")"
End Select


' Range(Zelle).Value = Ergebnis & Mid(xZwischen, intLang + 3, Len(xZwischen) - intLang - 2)

Loop While Zelle <> ""

End Sub

Anzeige
Re: Find-Methode (Rückgabewert)
13.09.2002 17:22:51
Hajo_Zi
Hallo Oliver

ohne Dein Makro durchzuarbeiten würde ich sagen da fehlt ein punkt

Set Bereich = .Range(suchBereich).Find(What:=xGesucht, LookIn:=xlValues)

Gruß Hajo

Re: Find-Methode (Rückgabewert)
13.09.2002 17:35:13
Oliver
Hallo Hajo,

*grins* funktioniert mit und ohne Punkt, frag mich nicht wieso.
Dafür war ne if-anweisung verkehrt, hab ich berichtigt.

Klappt bislang alles wunderbar, wenn's Probleme gibt, wo ich nicht weiterkomme, melde ich mich wieder.

Vielen Dank erstmal!!!

Grüsse,

:O)liver

Re: Find-Methode (Rückgabewert)
13.09.2002 17:38:48
Hajo_Zi
Hallo Oliver

es hat mit und ohne Punkt funktioniert weil das Tabellenblatt von With gerade das aktive war. Die With Anweisung wird ja verwendet um nicht ein Select auf die Tabelle zu machen.

Gruß Hajo

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige