Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1220to1224
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

Suchfunktion FIND Type missmatsch

Suchfunktion FIND Type missmatsch
ing.grohn
Hallo Forum,
mit folgender Suchfunktion finde ich Daten in meiner Tabelle:

Function NameSuchen(SuchName As String, Taste As String) As String
Dim Zelle As Range
Dim SuchR As Long
If Taste = "pgup" Then
SuchR = xlPrevious
Else
SuchR = xlNext
End If
On Error GoTo Errorhandler
'After:=Intersect(ActiveCell.EntireRow,  Columns(6)),
Set Zelle = Range("A:F").Find(what:=SuchName, _
After:=ActiveCell, _
LookIn:=xlFormulas, _
lookat:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=SuchR, _
MatchCase:=False, _
SearchFormat:=False)
If Zelle Is Nothing Then
MsgBox "Der Datensatz " & Chr(34) & SuchName & Chr(34) & " konnte nicht gefunden werden"
NameSuchen = ActiveCell.Row
Else
NameSuchen = Zelle.Row
Zelle.Select
End If
Exit Function
Errorhandler:
MsgBox "bei der Suche ist ein Fehler aufgetreten!" & Chr(10) & "Weiter mit Return/Eingabe!"
NameSuchen = ActiveCell.Row
End Function

Funktioniert prima !!!
Aber, wenn ich schreibe:

Set Zelle = Range("F:F").Find(w.....
kommt die Meldung: "Typen unverträglich!"
Warum ist das so?
Vielen Dank für Eure Mühe und Antworten
Mit freundlichen Grüßen
Albrecht

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Wo erfolgt der Aufruf?
09.07.2011 11:31:31
Erich
Hi Albrecht,
rufst du die Fkt. in einer Formel in der Tabelle auf?
Wenn ja: In welcher Zelle steht die Formel?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Wo erfolgt der Aufruf?
09.07.2011 16:09:50
ing.grohn
Hallo Erich,
der Aufruf erfolgt in einem VBA Modul
(und die Daten sind vom Typ String)
Mit freundlichen Grüßen
Albrecht
AW: Wo erfolgt der Aufruf?
09.07.2011 16:44:29
Erich
Hi Albrecht,
die Anweisung
Set Zelle = Range("A:F").Find(what:=SuchName, After:=ActiveCell, ...)
funktioniert, wenn die ActiveCell gerade eine Zelle in den Spalten A:F ist.
Wenn nicht, gibt es einen Fehler.
Dabei ist egal, ob der Suchstring gefunden würde oder nicht.
Wenn du Range("A:F") auf Range("F:F") verkleinerst, wird die Gefahr,
dass ActiveCell außerhalb den Bereichs liegt, viel größer.
Wenn man einen (einzelligen) Bereich als Parameter "after" angibt,
muss zum der durchsuchten Bereich (Range("F:F")) gehören.
Aber: Wenn man ihn nicht braucht, muss man den Parameter nicht angeben.
Die Folge: Du hast hier ein Problem weniger. :-) Lass einfach die Zeile mit dem "after:=" mal weg.
Schau dir auch mal an, was M$ in der VBA-Hilfe zur Find-Methode zu "after" schreibt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Suchfunktion FIND Type missmatsch
09.07.2011 16:35:09
Daniel
Hi
der Fehler kommt, wenn die Zelle die du bei After:= angibst, nicht Bestandteil des Suchbereichs ist, der vor .Find steht, dh. die Startzelle, ab der gesucht wird, muss auch bestandeil des Bereichs sein, in dem gesucht wird.
dh. es würde funktionieren, wenn eine Zelle in der Spalte F die aktive Zelle ist.
da aber wahrscheinlich der Anwender nur eine Zeile auswählt und sich nicht gedanken darum machen will, welche Spalte gerade aktiv ist, musst du das so absichern:
Set Zelle = Range("F:F").Find(what:=SuchName, _
After:=Intersect(Range("F:F"), ActiveCell.EntireRow), _
Gruß, Daniel
Anzeige
AW: Suchfunktion FIND Type missmatsch
11.07.2011 09:14:11
ing.grohn
Hallo Erich, Hallo Daniel,
bin z.Z. nicht online, daher dauerts bei mir mit den Antworten!
Vielen Dank!
Ich hatte die Zeile After=Activecell
durch After:=Intersect(ActiveCell.EntireRow, Columns(6))
ersetzt und den Suchbegriff als Variant deklariert und dann gings!
Nochmals vielen Dank, genau die richtige ANtwort.
Mit freundlichen Grüßen
Albrecht

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige