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

Laufzeitfehler 91

Laufzeitfehler 91
Peter
ich weiß es gibt tausende treffer dazu aber leider kann ich mit den gegebenen antworten nix anfangen.
ich möchte mit nem button eine suche über mehrere tabellenblätter hinweg starten. ich hab mir im faq folgenden code kopiert und eingefügt.
Private Sub CommandButton1_Click()
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String, sFind As String
sFind = InputBox("Bitte Suchbegriff eingeben:")
For Each wks In Worksheets
Set rng = wks.Cells.Find( _
what:=sFind, _
lookat:=xlWhole, _
LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, True
If MsgBox( _
prompt:="Weitersuchen?", _
Buttons:=vbYesNo + vbQuestion _
) = vbNo Then Exit Sub
Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
Next wks
MsgBox prompt:="Keine neue Fundstelle!"
End Sub
jetzt habe ich das problem das beim weitersuchen der laufzeit fehler 91 angezeigt wird. dies passiert allerdings nur wenn das suchergebnis nicht auf dem arbeitsblatt liegt auf dem der button ist.
über eure hilfe wäre ich sehr dankbar!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Laufzeitfehler 91
09.05.2011 14:09:17
Rudi
Hallo,
Private Sub CommandButton1_Click()
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String, sFind As String
sFind = InputBox("Bitte Suchbegriff eingeben:")
For Each wks In Worksheets
Set rng = wks.Cells.Find( _
what:=sFind, _
lookat:=xlWhole, _
LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
wks.Activate
Do
Application.Goto rng, True
If MsgBox( _
prompt:="Weitersuchen?", _
Buttons:=vbYesNo + vbQuestion _
) = vbNo Then Exit Sub
Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
Next wks
MsgBox prompt:="Keine neue Fundstelle!"
End Sub

Anzeige
AW: Laufzeitfehler 91
09.05.2011 14:31:41
Peter
danke für die schnelle antwort. leider ist das problem damit nicht behoben. ich habe testweise eine datei erstellt in der auf dem ersten blatt ein commando button der mit dem makro verknüpft ist. der erste treffer funktioniert ohne probleme. wenn ich dann auf weitersuchen klicke kommt laufzeitfehler 91.
klappt bei mir owT
09.05.2011 15:01:27
Rudi
AW: klappt bei mir owT
09.05.2011 15:50:24
Peter
ok ich hatte irgendeinen fehler drin jetzt gehts :) danke
ist es auch möglich mit dem "nein" knopf bei der frage "weitersuchen?" wieder zur ausgangsseite zurück zu kehren?
zurück zum Ausgangssheet
09.05.2011 15:57:37
Rudi
Hallo,
ganz einfach so:
Private Sub CommandButton1_Click()
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String, sFind As String
sFind = InputBox("Bitte Suchbegriff eingeben:")
For Each wks In Worksheets
Set rng = wks.Cells.Find( _
what:=sFind, _
lookat:=xlWhole, _
LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
wks.Activate
Do
Application.Goto rng, True
If MsgBox("Weitersuchen?", vbYesNo + vbQuestion) = vbNo Then
Me.Activate
Exit Sub
End If
Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
Next wks
MsgBox prompt:="Keine neue Fundstelle!"
End Sub

Gruß
Rudi
Anzeige
AW: zurück zum Ausgangssheet
09.05.2011 16:20:41
Peter
hmm bekomm ne fehlermeldung.
"Fehler beim Kompilieren unzulässige Verwendung des Schlüsselwortes Me!"
AW: zurück zum Ausgangssheet
09.05.2011 16:25:32
Rudi
Hallo,
kann ich nicht nachvollziehen. Wo steht der Code?
Vllt. so:
Private Sub CommandButton1_Click()
Dim wks As Worksheet, wksStart As Worksheet
Dim rng As Range
Dim sAddress As String, sFind As String
Set wksStart = ActiveSheet
sFind = InputBox("Bitte Suchbegriff eingeben:")
For Each wks In Worksheets
Set rng = wks.Cells.Find( _
what:=sFind, _
lookat:=xlWhole, _
LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
wks.Activate
Do
Application.Goto rng, True
If MsgBox("Weitersuchen?", vbYesNo + vbQuestion) = vbNo Then
wksStart.Activate
Exit Sub
End If
Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
Next wks
MsgBox prompt:="Keine neue Fundstelle!"
End Sub

Gruß
Rudi
Anzeige
AW: zurück zum Ausgangssheet
10.05.2011 08:18:33
Peter
ich habe einen button erstellt. klicke auf makro zuweisen. füge den code unter modul1 ein. speichern und ausprobieren!? ist daran vielleicht was falsch?
AW: zurück zum Ausgangssheet
10.05.2011 08:45:53
Rudi
Hallo,
Anrede, Gruß?
Füge einen Button aus der Steuerelemente-Toolbox ein und kopiere den Code in das Modul der Tabelle.
Gruß
Rudi
AW: zurück zum Ausgangssheet
10.05.2011 08:52:37
Peter
Hallo Rudi,
tut mir leid. So viel Hilfe und dann nicht mal Zeit für die Anrede.
Also jetzt funktioniert es. Ich habe noch eingefügt dass nach der Suche auch auf die Ausgangstabelle zurückgesprungen wird.
Worin liegt der Unterschied zwischen Active-X Steuerelement und Formularsteuerelement?
Gruß
Peter
Anzeige
Unterschied
10.05.2011 09:13:35
Rudi
Hallo,
Active-X Steuerelemente sind erheblich flexibler in der Steuerung (Ereignisprozeduren) und der Optik. Allerdings haben die tw. auch ne Macke. Commandbuttons z.B. neigen dazu, bei jedem Klick kleiner zu werden.
Gruß
Rudi
AW: Unterschied
10.05.2011 09:20:39
Peter
Hallo,
laso reicht für meine Zwecke das Formularsteuerelement vollkommen aus. Eine Frage habe ich jedoch noch. Ich habe 4 Tabellenblätter gefüllt mit Werkzeuglisten. Auf jeder soll sich nun so ein Suchbutton befinden. Nun möchte ich dass die Suche auch auf dem Blatt beginnt auf dem der Button geklickt wurde. Momentan sucht er ja die Blätter hintereinander durch.
Gruß
Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige