Betrifft: Wert in Zeile suchen und Position bestimmen
von: Peter
Geschrieben am: 03.02.2010 15:56:08
Liebes Forum
Wie kann ich in einer bestimmten Tabelle mit VBA die Zeile 1 absuchen und die Position bestimmen, in der
1) ein bestimmter String enthalten ist,
2) der Inhalt einem bestimmten String genau entspricht?
Ich möchte dies jeweils beim Verlassen einer bestimmten Tabelle bestimmen - mit Private Sub Worksheet_Deactivate()
Wer kann mir helfen?
Danke, Peter
Betrifft: AW: Wert in Zeile suchen und Position bestimmen
von: Hajo_Zi
Geschrieben am: 03.02.2010 16:00:40
Hallo Peter,
benutze Find. Analog zu dem Beispiel.
Set RaFound = .Range("A1:A" & LoLetzte).Find(sSearch, .Range("A" & LoLetzte), , xlWhole, xlByRows, xlNext)
If RaFound Is Nothing Then Exit Sub 'falls nicht gefunden wird Sub verlassen
Betrifft: AW: Wert in Zeile suchen und Position bestimmen
von: Peter
Geschrieben am: 03.02.2010 16:19:38
Hallo Hajo
Ich habe versucht, daraus eine Funktion zu basteln. Klappt noch nicht (vgl. hochgeladene Datei).
Ich möchte je eine Funktion, die mir den Range liefert, wenn der String genau übereinstimmt und eine, wenn der String enthalten ist.
Danke für jede Hilfe.
Peter
https://www.herber.de/bbs/user/67734.xls
Betrifft: AW: Wert in Zeile suchen und Position bestimmen
von: Hajo_Zi
Geschrieben am: 03.02.2010 16:25:27
Halo Peter,
im ersten Beitrag stan das Du in einer Zeile suchen willst, jetzt suchst Du in Spalte A.
Die Funktion soll meiner Meinung nach ein String zurückgeben und kein Range.
Ungetestet
Option Explicit Public Function FFINDEN(sSearch As String) As String Dim RaFound As Range Dim LoLetzte As Long LoLetzte = 26 With Sheets("Daten") Set RaFound = .Range("A1:A" & LoLetzte).Find(sSearch, .Range("A" & LoLetzte), , xlWhole, _ xlByRows, xlNext) If Not RaFound Is Nothing Then FFINDEN = "String stimmt überein" Else FFINDEN = "String stimmt nicht überein" End If End With End FunctionGruß Hajo
Betrifft: In Formeln könntest du mit VERGLEICH...
von: Luc:-?
Geschrieben am: 03.02.2010 17:50:32
...mit (1) und ohne (2) Platzhalter * arbeiten, Peter...
Das kannst du natürlich auch in VBA nachbauen. Für eine Eigenbau-Fkt (udF), darum scheint's wohl zu gehen, kannst du diese Fkt als WorksheetFunction.Match("text", zellbereichvon:bis, 0) einsetzen. Das Arg1 "text" wäre im 1.Fall als "*text*" zu schreiben. Match gibt auf jeden Fall die Position innerhalb von Arg2 wieder, das unbedingt ein Vektor°, also nur aus 1 Zeile oder Spalte, sein muss. Wenn der Text nicht enthalten ist, wird F-Wert #NV (Fehler 2042 bzw xlErrNA) geliefert. Du erhältst also bei Durchlauf nach Fall 1 die lfdNr aller betroffenen Zellen und kannst danach zu Fall 2 genau diese Zellen durch einfachen Vgl [a=b] bzw mit IDENTISCH (WorksheetFunction.Exact) oder StrCompare (oder so ähnlich) auf absolute Textgleichheit prüfen.
Gruß Luc :-?
° Anderenfalls muss zeilen- oder spaltenweise zusammengefasst wdn, was die Regie aber nicht gerade leichter macht. Man kann natürlich auch ganz darauf verzichten, PgmZyklen verwenden und dabei die Zellinhalte unter Verwendung des Operators Like (in der VBE-Hilfe unter Operator zu finden) überprüfen...