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

Excel VBA Suchfunktion- Objektvariable nicht festg

Excel VBA Suchfunktion- Objektvariable nicht festg
14.07.2016 19:33:01
MS
Hi,
ich habe bei Google ein VBA Script gefunden, welches eine Suchfunktion bietet.
Funktioniert super, nur dass, wenn die Suche erfolgreich war, immer diese Fehlermeldung angezeigt wird:
"Objektvariable oder With Blockvariable nicht festgelegt"
Ich suche mit diesen Script alle Tabellenblätter nach Nummern. Ist die Nummer gefunden, springt der Cursor dorthin. Funktioniert, aber nur kriege ich die Fehlermeldung nicht weg.
Ich habe diesen Code in das Tabellenblatt (ALT+F11) hinterlegt, in dem auch das Suchfeld ist. In diesen Tabellenblatt habe ich dort ein Entwicklertool (Button) eingefügt, der auf dieses Makro verweist.
Ich benutze Excel 2016.
Ich stell hier mal den Code rein:
Vielen Dank schon mal im Vorraus!
Option Explicit
Dim nummer As String
Dim sht As Worksheet
Dim Found As Range
Dim FirstAddress As String
Dim Zähler As Long
Dim xy As Long
Sub suchen_Mappe()
Sheets(1).Select
Zähler = 0
nummer = InputBox("Bitte geben Sie die nummer ein:" & Chr(13) & Chr(13) _
& "B bitte weglassen!", "Suche im Blatt", "")
If StrPtr(Inventarnummer) = 0 Then
Exit Sub
Else
If nummer = "" Then
Select Case MsgBox("Sie haben nichts eingegeben !", vbRetryCancel Or vbExclamation Or vbDefaultButton1, "nummer fehlt")
Case vbRetry
Call suchen_Mappe
Case vbCancel
Exit Sub
End Select
Else
End If
End If
For Each sht In Worksheets
sht.Activate
Set Found = sht.Cells.Find(Inventarnummer)
If Not Found Is Nothing Then
FirstAddress = Found.Address
Do
Found.Activate
Zähler = 1
Set Found = Cells.FindNext(After:=ActiveCell)
If Found.Address = FirstAddress Then Exit Do
Loop
End If
Next sht
If ActiveSheet.Index = Sheets.Count And Zähler GoTo Err
Else
Select Case MsgBox("Der gesuchte Wert ist gefunden" _
& vbCrLf & "" _
& vbCrLf & "Weitere suche ?" _
, vbYesNo Or vbInformation Or vbDefaultButton1, "Suchen in Mappe")
Case vbYes
Call suchen_Mappe
Case vbNo
Exit Sub
End Select
Exit Sub
End If
Err:
Select Case MsgBox("Der gesuchte Begriff wurde nicht gefunden." _
& vbCrLf & "Wollen Sie noch einmal suchen." _
, vbRetryCancel Or vbInformation Or vbSystemModal Or vbDefaultButton1, "Suche im Mappe")
Case vbRetry
Call suchen_Mappe
Case vbCancel
Exit Sub
End Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Suchfunktion- Objektvariable nicht festg
14.07.2016 19:47:15
Michael
Hi,
der Code ist in meinen Augen ziemlich übel, weil er sich an mehreren Stellen selbst aufruft:
Case vbRetry
Call suchen_Mappe

Die Eingabe gehört sich erst mal sauber programmiert, bevor die Suchfunktion angeworfen wird.
Der Fehler der Suchfunktion selbst liegt darin, daß in den Zeilen
Set Found = Cells.FindNext(After:=ActiveCell)
If Found.Address = FirstAddress Then Exit Do
NICHT mehr überprüft wird, ob Found existiert.
Das ganze Ding gehört sich etwas logischer aufgebaut, aber ohne Beispieldatei mag ich es nicht angehen ...
Schöne Grüße,
Michael
Anzeige
AW: Excel VBA Suchfunktion- Objektvariable nicht festg
14.07.2016 21:05:55
MS
Im Grunde suche ich nur eine Suchfunktion, die alle blätter auf die eingegebene Nummern durchsucht.
Ich weiß leider nicht wie ich überprüfen soll, ob Found existiert.
Alternativ hätte ich noch ein Script zur Suchfunktion, dieses findet aber garnix in meinen blättern? obwohl die Zellen mit den Inhalt definitiv vorhanden sind.
Option Explicit
Sub suchen()
Dim strSuch As String, ws As Integer, rng As Range, strNeu As String
Start:
Do
strSuch = InputBox("Wonach wird gesucht?" & Chr(13) & "Mindestens 3 Buchstaben angeben!")
If strSuch = "" Or Len(strSuch) = 0 Then Exit Sub
Loop While Len(strSuch) 

Anzeige
AW: Excel VBA Suchfunktion- Objektvariable nicht festg
15.07.2016 11:28:15
Michael
Hi,
es gibt viele Codes im weiten Web, aber ich würde Dir empfehlen, eine derartige Suchfunktion ganz bleiben zu lassen.
Schau, der eingebaute Finden-Dialog bietet alle Möglichkeiten, die der Anwender benötigt, und ob er Strg+f drückt oder auf irgendeine Weise ein Makro aufruft, ist für ihn der gleiche Aufwand.
Der .find-Befehl sieht auf den ersten Blick ziemlich einfach aus, hat aber so seine Tücken, z.B. daß er, wenn nichts weiter angegeben wird, immer die zuletzt verwendeten Einstellungen verwendet.
Ich sehe keinen Vorteil darin, sich die Finger wund zu programmieren, um einen Befehl nachzubauen, der ohnehin in einer "optimalen" Version bereits vorhanden ist.
Eine Doku findest Du auch hier: https://www.herber.de/mailing/vb/html/xlmthfind.htm
Schöne Grüße,
Michael
Anzeige
AW: Excel VBA Suchfunktion- Objektvariable nicht festg
18.07.2016 08:12:59
MS
Das ist fast schon peinlich, aber ich wusste nicht dass es so eine Suchfunktion strg + F gibt...
Gibt es einen Code, der Strg + F aufruft? Weil dann kann ich ihn hinter einen Button legen und man kann somit mittels Tastendruck auf einen Button das Suchfeld starten.
Ich habe es bereits mit der Aufnahmefunktion probiert, funktioniert aber leider nicht.
Vielen Dank
AW: Excel VBA Suchfunktion- Objektvariable nicht festg
18.07.2016 14:59:37
Mullit
Hallo,
...klaro, gibt's, Du könntest ihn natürlich auch rechts oben über das Excel-Menu aufrufen...
Option Explicit
Public Sub test()
Call Application.CommandBars.ExecuteMso(idMso:="FindDialogExcel")
End Sub

Gruß, Mullit
Anzeige
AW: Excel VBA Suchfunktion- Objektvariable nicht festg
18.07.2016 15:00:25
Michael
Hi,
das geht z.B. so:
Sub suchDialog()
Application.SendKeys "^f"
End Sub

aus: https://www.herber.de/forum/archiv/1312to1316/1313218_SucheFenster_per_VBA.html
Nochmal meine Empfehlung: tu das nicht! (Fast) jeder Excel-Anwender hat Strg-f "in den Fingern", das ist der 2. Abend eines Excel-Einsteigerkurses...
... den ich Dir wirklich empfehlen würde, und das meine ich überhaupt nicht polemisch: 1. ist die Atmosphäre in solchen Kursen zumeist sehr angenehm (alle Teilnehmer zahlen dafür und wollen auch was wissen, ganz im Gegensatz zur Schule) und 2. rundet man stückchenweise vorhandene Kenntnisse nach oben ab, naja, oder vielmehr "auf".
Schöne Grüße,
Michael
Anzeige

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige