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

Probleme mit "Columns(x).Find(what"

Probleme mit "Columns(x).Find(what"
04.01.2019 11:23:45
Excel2017
Hallo Forum,
zuerst allen Lesern ein "gute Neues Jahr 2019".
Ich habe Probleme mit "Columns(x).Find(what".
In Spalte 1 stehen untereinander 5 verschiedene Begriffe. In Spalte 2 stehen 4 dieser Begriffe (in einer anderen Reihenfolge) und ein 5. und damit neuer Begriff.
Mein VBA-Code funktioniert, solange der Begriff aus Spalte 1 in Spalte 2 gefunden wird. Wird ein Begriff gesucht, welcher in Spate 2 nicht vorhanden ist, erhalte ich einen "Laufzeitfehler 91"
Um das Problem zu umgehen, arbeite ich mit "On Error Resume Next" und lösche zuvor das Ergebnisfeld. Das kann doch aber nicht der Standard sein!!
Frage 1: was ist an meinem Code falsch
Frage 2: kann ich bei .find auch direkt die Celle benutzen?

Danke im Voraus für jede (brauchbare) Antwort.
Gruß
Werner
hier mein Code:
Sub Suchen()
Dim LCOunt1 As Long
Dim Suchbegriff As String
Dim Fundort As Long
For LCOunt1 = 1 To 5
Suchbegriff = Cells(LCOunt1, 1).Value
'Fundort = 0
'On Error Resume Next
Fundort = Columns(2).Find(what:=Suchbegriff, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False).Row
'On Error GoTo 0
Cells(LCOunt1, 3).Value = Fundort
Next
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit "Columns(x).Find(what"
04.01.2019 11:31:36
ChrisL
Hi Werner
Man müsste zuerst prüfen ob das Objekt "Nothing" ist und erst dann die Row ermitteln. Aber eine einfache Formel würde es auch tun...
Sub t()
With Range("C1:C5")
.Formula = "=IFERROR(MATCH(A1,B$1:B$5,0),""kein Treffer"")"
.Value = .Value
End With
End Sub
cu
Chris
AW: Probleme mit "Columns(x).Find(what"
04.01.2019 11:46:19
Excel2017
Hallo Chris,
danke für Dein Beispiel. Ich habe es probiert, und es funktioniert problemlos.
Mein Problem ist, dass ich nach jedem einzelnen Fund eine Verarbeitung starte. Das ist mit Deiner Lösung so nicht möglich. Ich müsste in meiner "echten" Tabelle eine zusätzliche Spalte reservieren, in welche ich die Fundstelle eintragen lasse, um danach diese Spalte Schritt für Schritt abzuarbeiten.
Mir wäre eine Einzelsuche - so wie ich das in meinem Beispiel gemacht habe - wesentlich angenehmer. Möglicherweise verstehe ich Deinen Vorschlag auch nicht richtig!
Gruß
Werner
Anzeige
AW: Probleme mit "Columns(x).Find(what"
04.01.2019 11:49:07
{Boris}
Hi,
um Dir aber auch zu zeigen, wie das mit "Nothing" gemeint ist:
Sub Suchen()
Dim LCOunt1 As Long
Dim Suchbegriff As String
Dim Fundort As Range
For LCOunt1 = 1 To 5
Suchbegriff = Cells(LCOunt1, 1).Value
'Fundort = 0
Set Fundort = Columns(2).Find(what:=Suchbegriff, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
 If Not Fundort Is Nothing Then
      Cells(LCOunt1, 3).Value = Fundort.Row
End If
Next
End Sub
VG, Boris
AW: Probleme mit "Columns(x).Find(what"
04.01.2019 11:59:31
Excel2017
Hallo Boris,
Danke für Deine Antwort. Das funktioniert jetzt ohne "on Error" auch bei neuen Begriffen.
Was noch offen ist, ist meine 2. Frage: kann ich bei .find auch direkt die Celle benutzen?
Gruß
Werner
Anzeige
wie meinst du das?
04.01.2019 12:17:24
Rudi
Hallo,
in dem Beispiel ist Fundort doch eine Zelle.
Gruß
Rudi
AW: wie meinst du das?
04.01.2019 13:05:32
Excel2017
Hallo Rudi,
auch Dir danke für Deine Antwort.
Es geht nicht um "Fundort", sondern um "Suchbegriff". Und die offene Frage ist, wie ich statt "Suchbegriff".
Inzwischen habe ich "Suchbegriff" einfach durch "Cells(LCOunt1, 1).Value" ersetzt. Und siehe da, es funktioniert auch so.
Meine 2. Frage hat sich dadurch erledigt.

Nochmals allen "Danke". Mein Problem wurde erfolgreich gelöst.

Gruß
Werner
AW: Probleme mit "Columns(x).Find(what"
04.01.2019 13:06:14
Werner
Hallo,
z.B. so:
Sub Suchen()
Dim LCOunt1 As Long, Suchbegriff As String, Fundort As Range
For LCOunt1 = 1 To 5
Suchbegriff = Cells(LCOunt1, 1).Value
Set Fundort = Columns(2).Find(what:=Suchbegriff, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False)
If Not Fundort Is Nothing Then
Fundort.Offset(, 1) = Fundort.Row
End If
Next
End Sub
Gruß Werner
Anzeige
AW: Probleme mit "Columns(x).Find(what"
04.01.2019 11:49:56
Luschi
Hallo Werner,
Du mußt Suche des Wertes und Auswertung der Suche trennen:

Dim rg As Range
Set rg = Columns(2).Find(what:=Suchbegriff, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not (rg Is Nothing) Then
Fundort = rg.Row
Cells(LCOunt1, 3).Value = Fundort
End If
Gruß von Luschi
aus klein-Paris

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige