Microsoft Excel

Herbers Excel/VBA-Archiv

Wert in Zeile suchen und Position bestimmen | Herbers Excel-Forum


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

GrußformelHomepage


  

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 Function
Gruß 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...


Beiträge aus den Excel-Beispielen zum Thema "Wert in Zeile suchen und Position bestimmen"