Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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 Funktion

.find Funktion
Dieterlem
Hallo Excelfreunde,
ich bin gerade dabei eine Onlinehilfe zu programmieren. Dazu habe ich eine Userform erstellt in der auch eine Suche integriert ist. Mit dieser Suche habe ich Schwierigkeiten. Ich verwende dazu die .find Funktion. Doch leider funktioniert nur mein Code, wenn das Sheet in dem gesucht werden soll geöffnet ist. Dies muss aber vermieden werden.
Zum besseren Verständnis habe ich eine Beispieldatei beigefügt:
https://www.herber.de/bbs/user/68664.xls
Ich hoffe, dass mir jemand helfen kann.
Gruß
Dieterlem

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

Betreff
Benutzer
Anzeige
AW: .find Funktion
19.03.2010 19:46:20
Gerd
Hallo Dieterlem,
a) Was verstehst Du unter "Sheet geöffnet ist" ?
b) Kannst Du beschreiben, wann ein Treffer vorliegen soll ?
'dein Code
Private Sub cbuSuchen_Click()
' Suchtext finden und Überschriften in
' Listbox eintragen
Dim SuchText As String
Dim ErgRow As Byte   'Row in der der gesuchte Eintrag steht
Dim iRow As Integer
SuchText = "*" & tboSuchen & "*"  'Änlichkeitssuche
lboSuchErg.Clear
For iRow = 2 To 55  'Suchbereich
If WorksheetFunction.CountIf(Sheets(1).Range("B2:B55"), SuchText) = 0 Then GoTo KEINTREFFER
ErgRow = Sheets(1).Cells(Sheets(1).Range("B2:B55").Find(What:=SuchText, After:=Sheets(1). _
Cells(iRow, 2)).Row, 1).Row
If ErgRow > iRow Then iRow = ErgRow             'damit zum nächsten Ergebnis gesprungen  _
werden kann
If ErgRow 
Gruß Gerd
Anzeige
AW: .find Funktion
19.03.2010 19:49:21
Daniel
Hi
ich kann jetzt deine Datei nicht öffnen, aber wahrscheinlich liegt es daran, daß du nicht vollständig referenzierst.
Wenn Code sich auf Zellen in nicht akiven Sheets beziehen soll, muss man IMMER Sheet und Range bzw Cells angeben, auch bei Zellbezügen innerhalb von Funktionen:
Sheets(x).Columns(y).Find(what:="DeinText", after:=Sheets(x).Cells(5,1), .....)
oder bei der Range-Definition:
Range(Sheets(x).Cells(y,z), Sheets(x).Cells(a,b)).ClearContents
Gruß. Daniel
AW: .find Funktion
19.03.2010 20:09:13
Dieterlem
Hallo,
als Suchbeispiel verwende ich ="xx". Da sollten 4 Einträge gefunden werden.
Ich bekomme den Code nur zu laufen, wenn ich mit Selection.Find arbeite. Dies geht aber ja nur, wenn ich zuvor das Sheet auch aktiviere. Dies will ich aber unter keinen Umständen. Es muss auch funktionieren, wenn ich auf einem anderem Tabellenblatt bin (Tabelle1).
Wenn ich es mit Sheets(1).Range("B2:B55").Find arbeite, dann bekomme ich einen Laufzeitfehler 91
Hier nochmal überarbeitet:
https://www.herber.de/bbs/user/68665.xls
Private Sub cbuSuchen_Click()
' Suchtext finden und Überschriften in
' Listbox eintragen
Dim SuchText As String
Dim ErgRow As Byte   'Row in der der gesuchte Eintrag steht
Dim iRow As Integer
Sheets(1).Range("B2:B55").Select
SuchText = "*" & tboSuchen & "*"  'Änlichkeitssuche
lboSuchErg.Clear
For iRow = 2 To 55  'Suchbereich
If WorksheetFunction.CountIf(Sheets(1).Range("B2:B55"), SuchText) = 0 Then GoTo KEINTREFFER
ErgRow = Sheets(1).Cells(Selection.Find(What:=SuchText, After:=Sheets(1).Cells(iRow, 2)). _
Row, 1).Row
If ErgRow > iRow Then iRow = ErgRow
If ErgRow 

Anzeige
AW: .find Funktion
20.03.2010 09:23:44
Rainer
Hallo,
habe leider kaum Ahnung von VBA und lese mir Eure Threads um die Möglichkeiten von VBA kennen zu lernen. Dabei "probiere" ich natürlich auch aus.
Kenne hier leider nicht die Feinheiten zwischen .Activate und .Select und ob Du damit

Dies geht aber ja nur, wenn ich zuvor das Sheet auch aktiviere.
.Activate oder auch .select meinst?
Denn so würde es ja laufen:
Private Sub cbuSuchen_Click()
Tabelle4.Select
Sheets(1).Range("B2:B55").Select
ENDE:
Tabelle1.Select '* Anmerkung unten
End Sub

* Logischer weise würde damit auch Tabelle1 am Ende stehen, wenn man von HELP aus öffnet. Könnte man dann aber sicher auch irgendwie lösen.
Habe mir lange überlegt, ob ich mich als VBA-Laie an diesem Thread beteilige.
Da meine Anwendungn nicht so umfassen sind, sind meine Lösungen dann eher in die Rubrik "wenns läuft ..." einzuordnen.
Für die Optimierung brauche ich dann wieder Hilfe von Euch.
An dieser Stelle einfach mal ein dickes Danke.

Gruß Rainer
Anzeige
AW: .find Funktion
20.03.2010 11:17:11
Dieterlem
Hallo Rainer,
es ist zwar Möglich zuvor die Help-Tabelle zu Aktivieren und den Bereich zu selektieren. Das würde auch funktionieren aber dabei würde auch die Help-Tabelle angezeigt werden. Dies möchte ich jedoch nicht.
Danke für deine Antwort
Gruß
Dieterlem
AW: .find Funktion
20.03.2010 13:51:49
Gerd
Hallo Dieterlem,
ohne Wirrniss bei der Find-Methode.
Sub test()
Dim Suchbegriff As String
Dim df() As Variant
Dim i As Integer
Suchbegriff = "z"
df = Sheets(1).Range("A2:B55").Value2
ListBox1.Clear
For i = LBound(df) To UBound(df)
If df(i, 2) Like "*" & Suchbegriff & "*" Then
ListBox1.AddItem df(i, 1)
End If
Next
If ListBox1.ListCount = 0 Then ListBox1.AddItem "(kein Ergebnis)"
End Sub
Gruß Gerd
Anzeige
Das wars - sehr elegant ohne Wirrniss owT
20.03.2010 14:35:12
Dieterlem

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige