Anzeige
Archiv - Navigation
1024to1028
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
Inhaltsverzeichnis

function Probleme mit find-Methode

function Probleme mit find-Methode
16.11.2008 17:16:39
Jens
Hallo,
ich habe ein Problem mit einer Funktion, die nach Text in Zellen mit der find-Methode sucht und dann die Zelleadresse zurück geben soll.
Ich habe den code schon in einem Sub und da funktioniert das Ganze auch.
'es wird nach dem Text in C1 gesucht und die Adresse in A1 ausgegeben.

Sub address()
Dim rng As Range
Set rng = Cells.Find(What:=[C1], After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False)
[A1] = rng.address
End Sub


'als Function wird immer #wert zurückgegeben!? Warum?


Function addi(such As Variant) As Variant
Dim rng As Range
Set rng = Cells.Find(What:=such, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False)
addi = rng.address
End Function


Vielleicht kann mir jemand mit mehr vba-Erfahrung weiterhelfen? Ich verstehe nicht warum die Adresse nicht korrekt zurückgeben wird. Diverse andere Datentypen habe ich schon probiert.
Danke

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

Betreff
Datum
Anwender
Anzeige
AW: function Probleme mit find-Methode
16.11.2008 17:38:39
Gerd
Hallo Jens,
so nebenbei "Cells" sind alle 65536 x 256 Zellen des Tabellenblattes.
Da kann eine Suche schon etwas länger dauern. Schränke besser den
Bereich, in dem gesucht werden soll, mit Range(......) ein.
a) Welche Sorte Suchbegriffe hast Du ? Zahlen, Buchstaben, Datum
b) Wie sind die Zellen im Suchbereich formatiert(Zahlenformat) ?
c) Gibt es andere Unterschiede zwischen dem Suchbgriff u. den Werten im Suchbereich
Schreibweise, Umlaute etc. ?
d) Ist die Tabelle mit dem Suchbereich diejenige mit dem aktive Fenster?
"Cells" oder auch "Range" ohne Voranstellung eines Work-/Sheets bezieht sich auf das AktiveSheet
Gruß Gerd
Anzeige
AW: function Probleme mit find-Methode
16.11.2008 18:01:40
Jens
Hallo Gerd,
bisher ist alles auf einem Tabellenblatt und alles ist Text.
In der function übergebe ich mit such eine Zelle (mit Text), deshalb müsste es eigentlich funktionierten, denn in dem sub suche ich ja auch nach einer Zelle.
Offenbar bekommt rng keinen richtigen Wert, auf jeden Fall wird nicht korektes zurückgegeben.
Ich verstehe es nicht...
AW: function Probleme mit find-Methode
16.11.2008 17:55:56
Kuwe
Hallo Jens,
die Find-Methode geht nicht in einer UDF.
Gruß Uwe
AW: function Probleme mit find-Methode
16.11.2008 18:06:00
Jens
Danke Uwe
das ist aber ärgerlich...
warum eigentlich nicht?
AW: function Probleme mit find-Methode
16.11.2008 18:16:00
Kuwe
Hallo Jens,
ja, das ist leider so.
Den Grund dafür weiß ich nicht.
Gruß Uwe
Anzeige
AW: function Probleme mit find-Methode
16.11.2008 18:20:00
Tino
Hallo,
hier mal ein Beispiel.
Sub Test()
 MsgBox addi("Hallo")
End Sub

Function addi(such As Variant) As Variant
Dim rng As Range
Set rng = ActiveSheet.UsedRange.Find(such, , xlValues, xlWhole)
    If Not rng Is Nothing Then 'Prüfen ob Zelle gefunden 
     addi = rng.Address
    End If
End Function


Bei der Suche nach Zahlen und Datum, solltest Du auf dass Format der Zellen achten.
Beispiel:
Du möchtest nach der Zahl 20 Suchen und die Zellen sind mit zwei Nachkommastellen Formatiert, so müsste die Suche danach so aussehen.

Sub Test()
 MsgBox SuchText1("20.00")
End Sub

Function SuchText1(such As Variant) 'genaue Übereinstimmung 
Dim rng As Range
Set rng = ActiveSheet.UsedRange.Find(such, , xlValues, xlWhole)
'Bei Zahlen ist diese Variante besser 
'xlPart 
    If Not rng Is Nothing Then 'Prüfen ob Zelle gefunden 
     SuchText1 = rng.Address
    End If
End Function


Alternative kannst Du auch die Match (Vergleich) Funktion verwenden, bei dieser gibt es aber auch einige Einschränkungen, da sollte die Suchspalte bekannt sein.
Beispiel:

Sub Test()
Dim Datum As Double
Datum = CDate("16.11.2008")
 MsgBox SuchText1(Datum)
End Sub

Function SuchText1(such As Variant) 'genaue Übereinstimmung 
Dim lngRow
 
 lngRow = Application.Match(such, Range("A:A"))
 
 If IsNumeric(lngRow) Then
  SuchText1 = Cells(lngRow, "A").Address
 End If

End Function


Ich hoffe meine Beschreibung ist zu verstehen!?
Gruß Tino

Anzeige
AW: function Probleme mit find-Methode
16.11.2008 18:45:00
Tino
Hallo,
ach so, Du möchtest dies in einer Funktion in der Zelle verwenden, dass geht so nicht.
Vielleicht reichen Dir die Funktionen von Excel auch aus.
Beispiel:
 ABCD
1SuchwertSuchfunktion Liste
2HalloD2 Hallo

Formeln der Tabelle
ZelleFormel
B2=WENN(ISTFEHLER(VERGLEICH(A2;D:D;0)); "";ADRESSE(VERGLEICH(A2;D:D;0); 4;4))

Gruß Tino
Anzeige
AW: function Probleme mit find-Methode
16.11.2008 18:53:00
Jens
Ich danke allen für die vielen Lösungsansätze!
mit match Funktion sowie mit der Excel-Lösung kann ich mein Problem sicherlich lösen.
Vielen Dank

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige