Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
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

Find funktioniert nicht richtig

Find funktioniert nicht richtig
03.05.2016 08:08:52
Oisse
Guten Morgen Zusammen,
ich habe das Problem, dass ich nach einer exakten Zeichenfolge suchen muss.
Wenn diese Zeichenfolge nicht genau ist, dann soll der Vorgang abgebrochen werden.
Ich habe dazu folgenden Code, der so auch funktioniert aber warum funktioniert die find Methode nicht auf Exaktheit?
Set wsSearch = ThisWorkbook.Sheets(Tbl2)
'Suche in der Mappe in Spalte W (Wert der Zelle muss in diesem Fall komplett ü _
bereinstimmen, wenn das nicht gewünscht ist LookAt:= auf xlPart ändern)
With wsSearch.Range("W:W")
Set c = .Find(strFind, LookIn:=xlValues, LookAt:=xlWhole)
If c Is Nothing Then    'Wenn die Vorgangsnummer nicht vorhanden oder falsch ist,  _
dann den Vorgang abbrechen
If MsgBox("Diese Vorgangsnummer ist nicht vorhanden", vbOKOnly, "Achtung") =  _
vbOK Then
Exit Sub
End If
End If
If Not c Is Nothing Then
firstAddress = c.Address
Range(c.Address).Select      'Die Zeile in der der zu suchende Wert ist  _
markieren
Do
Union(Selection, Range(c.Address)).Select     'alle Zeilen in denen der zu  _
suchende Wert vorkommt markieren
If IsEmpty(c.Offset(0, -3)) Then            'Wenn Spalte "T" (Verkaufspreis" _
) leer ist, dann den Vorgang abbrechen
If MsgBox("Es ist noch kein Verkaufspreis eingegeben", vbOKOnly, "Achtung") _
= vbOK Then
Exit Sub
End If
End If
'Finde den nächsten passenden Eintrag
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If

Wird nämlich irgendein Wert eingegeben, dann werden die Werte aus der Zeile ausgegeben, bei der eine Zelle markiert ist.
Warum? Ich verstehs nicht.
Könnte mir das bitte jemand erklären?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Find funktioniert nicht richtig
03.05.2016 08:32:50
Werner
Hallo,
Set c = .Find(strFind, LookIn:=xlValues, MatchCase=True, LookAt:=xlWhole)

Gruß Werner

AW: Find funktioniert nicht richtig
03.05.2016 10:37:48
Peter
Hallo Werner,
du solltest als erstes im Modul Option Explicit schreiben und dann alle Variablen deklarieren und auch End With einfügen, vielleicht läuft es dann einwandfrei.
Gruß Peter

AW: falscher Ansprechpartner
03.05.2016 10:47:45
Werner
Hallo Peter,
falscher Ansprechpartner.
Gruß Werner

AW: falscher Ansprechpartner
03.05.2016 12:09:44
Peter
Hallo Werner,
da hast du natürlich ganz recht, tut mir leid.
Gruß Peter

AW: Find funktioniert nicht richtig
03.05.2016 13:59:23
Oisse
Hallo Werner, hallo Peter,
vielen Dank für eure Antworten.
Der gepostete Code war nur ein Codeschnipsel. Es kommt dann noch End With.
Ich habe die Zeile
Set c = .Find(strFind, LookIn:=xlValues, MatchCase=True, LookAt:=xlWhole)

so eingegeben. Jetzt kommt die Fehlermeldung: Syntaxfehler
Ich habe dann Option Explicit gesetzt.
Es kommt die gleiche Fehlermeldung
Allerdings geht es bei MatchCase um die Groß und Kleinschreibung, wenn ich das richtig verstanden habe.
Bei mir ist es allerdings so, dass keine Fehlermeldung kommt oder etwas abgebrochen wird, wenn ein völlig falscher Wert in der Inbox eingegeben wird.
Wenn ich bspw. Al 12 eingebe obwohl das nicht vorhanden ist, werden trotzdem Daten geliefert und zwar diejenige Zeile, in der eine markierte Zelle ist.
Der Code bis End With sieht folgendermaßen aus:
Option Explicit
Private Sub OptionButton2_Click()
Dim wsSearch    As Worksheet
Dim c           As Range
Dim wsTarget    As Worksheet
Dim strFind     As String
Dim firstAddress As String
Dim arrFiles    As Variant
Dim arrSheets   As Variant
Dim i           As Integer
Dim int_Counter As Integer
Dim int_Column  As Integer
Dim rng_Row As Range
'Hier wird in einer InputBox eine Vorgansnummer eingegeben
'Nach dieser Nummer wird in Spalte W gesucht und alle Zeilen, in denen diese Nummer  _
vorkommt selektiert
Unload UserForm1
strFind = InputBox("Bitte Vorgangsnummer eingeben", "Vorgangsnummer")
Tbl2 = "Artikel" 'Tabellenblatt aus dem die Daten geholt werden sollen
arrFiles = Array(ThisWorkbook.Path & "Artikelliste.xlsm")
'Namen der Sheets in der entsprechenden Reihenfolge der oben angeführten Dateien
arrSheets = Array(Tbl2)
'Screenflicker unterdrücken
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Alle Dateien im Array verarbeiten
For i = 0 To UBound(arrFiles)
'Mappe öffnen
Set wsSearch = ThisWorkbook.Sheets(Tbl2)
'Suche in der Mappe in Spalte W (Wert der Zelle muss in diesem Fall komplett ü _
bereinstimmen, wenn das nicht gewünscht ist LookAt:= auf xlPart ändern)
With wsSearch.Range("W:W")
Set c = .Find(strFind, LookIn:=xlValues, LookAt:=xlWhole)
'If c Is Nothing Then    'Wenn die Vorgangsnummer nicht vorhanden oder falsch ist,  _
dann den Vorgang abbrechen
'If MsgBox("Diese Vorgangsnummer ist nicht vorhanden", vbOKOnly, "Achtung") =  _
vbOK Then
'Exit Sub
'End If
'End If
If Not c Is Nothing Then
firstAddress = c.Address
Range(c.Address).Select      'Die Zeile in der der zu suchende Wert ist  _
markieren
Do
Union(Selection, Range(c.Address)).Select     'alle Zeilen in denen der zu  _
suchende Wert vorkommt markieren
If IsEmpty(c.Offset(0, -3)) Then            'Wenn Spalte "T" (Verkaufspreis" _
) leer ist, dann den Vorgang abbrechen
If MsgBox("Es ist noch kein Verkaufspreis eingegeben", vbOKOnly, "Achtung") _
= vbOK Then
Exit Sub
End If
End If
'Finde den nächsten passenden Eintrag
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
' schließe die Mappe
'wsSearch.Parent.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Ab hier erfolgt dann das Auslesen der Daten aus den entsprechenden Zellen der oben  _
selektierten Zeilen
'und die Zuordnung in die Tabelle Rechnung

Den Teil mit der Fehlermeldung bei nicht vorhandener Vorgangsnummer ist hier weggeschaltet, funktioniert aber.
Ich versteh nur nicht, warum ich Daten bekomme, wenn doch der Wert, der in der Inbox steht, gar nicht vorhanden ist und folglich auch gar nicht gefunden werden kann.
Warum nimmt mir das Programm dann die Werte aus der Zeile, in der sich eine selektierte Zelle befindet.
Wo ist mein Denkfehler? Oder liegt es an Union(Selection...)?

Anzeige
AW: Find funktioniert nicht richtig
03.05.2016 12:19:07
Peter
Hallo Oisse,
Hallo Werner,
du solltest als erstes im Modul Option Explicit schreiben und dann alle Variablen deklarieren und auch End With einfügen, vielleicht läuft es dann einwandfrei.
Dann solltest du noch zusehen, dass deine zu suchenden Begriffe ohne evtl. führende/nachfolgende Leerstellen zur Verfügung stehen.
Gruß Peter

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige