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

VBA: wenn FIND false?

VBA: wenn FIND false?
28.10.2022 14:40:47
MarC
Hi ich habe eine weitere Frage zur "FIND" Funktion.
Wenn ich in meine Übersichtstabelle doppelt klicke sollen alle Informationen zu dem entsprechenden Produkt aus der Datenbank geladen werden. Das funktioniert wunderbar. Aber was ist wenn das Produkt nicht in der Datenbank gefunden wird? Ich erhalte dann immer einen Laufzeitfehler 91. Ich denke mal das ich einen Befehle brauche der das abbricht wenn die Bedingung nicht erfüllt ist so was wie "On Error......" aber ich komme leider nicht drauf.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row > 9 And Target.Column > 2 And Target.Column  "" Then
Cancel = True
ZeileEdit1 = Target.Row
TypeSearch = Worksheets("Overview").Cells(ZeileEdit1, 3).Value
DeviceSearch = Worksheets("Overview").Cells(ZeileEdit1, 5).Value
If ZeileEdit2 = Worksheets("Data Base").Columns("D:H").Find(TypeSearch, MatchCase:=True).Row And Worksheets("Data Base").Columns("D:H").Find(DeviceSearch, MatchCase:=True).Row Then
uf_EditType.Show
Else
MsgBox "Keinen Eintrag gefunden"
End If
End If
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: wenn FIND false?
28.10.2022 14:50:23
Daniel
Hi
schreibe das .find-ergebnis erstmal in eine Range-Variable:
dann kannst du diese Variable abfragen. Sollte .find nichts gefunden haben, ist die Variable nothing und die Prüfung würde lauten:

dim x as range
set x = ...Find(...)
if not x is nothing then
hier dann der weiter Code für den fall, das .find was gefunden hat
Else
hier der weitere Code für den Fall, das .find nichts gefunden hat
end if
und was genau willst du in deiner IF abfrage prüfen?
Gruß Daniel
AW: VBA: wenn FIND false?
28.10.2022 15:31:20
GerdL
Hallo Marc,
über den Variablentyp der Suchbegriffe solltest du nachdenken u. bei den Find-Methoden die Argumente lookat und lookin angeben.
Bei diesem Code sollen natürlich in den Codezeilen der Find-Methoden keine weiteren Fehlerquellen stecken.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim TypeSearch As Variant, DeviceSearch As Variant
Dim ZeileEdit1 As Long, ZeileEdit2 As Long
If Target.Row > 9 And Target.Column > 2 And Target.Column  "" Then
Cancel = True
TypeSearch = Worksheets("Overview").Cells(Target.Row, 3).Value
DeviceSearch = Worksheets("Overview").Cells(Target.Row, 5).Value
On Error Resume Next
ZeileEdit1 = Worksheets("Data Base").Columns("D:H").Find(TypeSearch, MatchCase:=True).Row
ZeileEdit2 = Worksheets("Data Base").Columns("D:H").Find(DeviceSearch, MatchCase:=True).Row
On Error GoTo 0
If ZeileEdit1 * ZeileEdit2 > 0 Then
uf_EditType.Show
Else
MsgBox "Keinen Eintrag gefunden"
End If
End If
End Sub
Gruß Gerd
Anzeige
AW: VBA: wenn FIND false?
28.10.2022 15:58:25
MarC
Hm Gerd jetzt kann ich dir nicht ganz folgen.
Also ich habe zwei Suchbegriffe die sich in der Zeile ZeileEdit1 befinden und in die Variablen TypeSearch und DeviceSearch geschrieben werden. Jetzt möchte ich diese beiden Begriffe auf einem anderen Tabellenblatt suchen. Beide Begriffe müssen sich in der gleichen Zeile befinden. Wenn die beiden gefunden wurden möchte ich die Zeile in der sie sich befinden in die Variable ZeileEdit2 schreiben. Wenn keiner der Begriffe gefunden wird oder in keiner Kombinantion gefunden werden soll die Msg kommen "keinen Eintrag gefunden".
AW: VBA: wenn FIND false?
28.10.2022 17:17:32
MarC
Irgendwie ist der Wurm drin. Ich habe jetzt rum probiert aber bekomme es einfach nicht hin. Ich habe zwei Suchkriterien nach denen ich in einem anderen Blatt suche. Beide müssen in der selben Zeile vorkommen. Wenn die gefunden wurden möchte ich das die Zeile in ZeileEdit2 geschrieben wird. Wenn das nicht der Fall ist soll eine MSG kommen.
So schwer ist es eigentlich aber anscheinend übersehe ich was. Im Netz habe ich gelesen das Multi Search nicht geht.
Gruß
MarC
Anzeige
AW: VBA: wenn FIND false?
28.10.2022 18:08:34
Daniel
Hi
kannst du auch so machen, Wenn beide Begriffe in der selben Zeile in einem Bestimmten Spaltenbereich vorkommen müssen (hier bspw
Trage in eine Hilfsspalte am Tabellenende folgende Formel ein:

=Wenn(ZählenWenn(D1:H1;"Suchbegriff1")*ZählenWenn(D1:H1;"Suchbegriff2")>0;Zeile();"")
dort wo beide Werte in einer Zeile stehen, wird dann die Zeilennummer ausgegeben.
mit MIN(Hilfsspalte) kannst du dann die erste Zeilennummer ermitteln die zutrifft, die letzte mit MAX(Hilfsspalte),
ob und wieviele Treffer es gibt, kannst du mit ANZAHL(Hilfsspalte) abfragen (Anzahl zählt die Zahlen)
wenns mehrere gibt, ermittelt man die dazwischenliegenden mit KKLEINSTE oder KGRÖSSTE, oder du machst eine Schleife über zellen mit Zahl.
(SpecialCells(xlcelltypeformulas, 1))
und ja auch mit VBA würde ich das so machen.
Gruß Daniel
Anzeige
AW: VBA: wenn FIND false?
29.10.2022 14:40:43
GerdL
Moin Marc

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim TypeSearch As Variant, DeviceSearch As Variant
Dim Zelle1 As Range, Zelle2 As Range
Dim ZeileEdit2 As Long
If Target.Row > 9 And Target.Column > 2 And Target.Column  "" Then
Cancel = True
TypeSearch = Worksheets("Overview").Cells(Target.Row, 3).Value
DeviceSearch = Worksheets("Overview").Cells(Target.Row, 5).Value
Set Zelle1 = Worksheets("Data Base").Columns("D:H").Find(TypeSearch, MatchCase:=True)
If Not Zelle1 Is Nothing Then
Set Zelle2 = Worksheets("Data Base").Range("D" & Zelle1.Row & ":H" & Zelle1.Row).Find(DeviceSearch, MatchCase:=True)
End If
If Not Zelle2 Is Nothing Then
ZeileEdit2 = Zelle2.Row
uf_EditType.Show
Else
MsgBox "Keinen Eintrag gefunden"
End If
End If
End Sub
Gruß Gerd
Anzeige
Danke an alle
02.11.2022 20:07:26
MarC
Servus Gerd,
ich habe es mit einer Hilfsspalte gelöst. Da dein Code aber schöner läuft wie meine Lösung nehme ich deine her. Vielen Dank für deine Hilfe :-)
Gruß
MarC

226 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige