Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

Forumthread: 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

Anzeige

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
Anzeige
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
Anzeige
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
wie meinst du das?
04.01.2019 12:17:24
Rudi
Hallo,
in dem Beispiel ist Fundort doch eine Zelle.
Gruß
Rudi
Anzeige
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
Anzeige
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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige