Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 93

Forumthread: Laufzeitfehler 93

Laufzeitfehler 93
26.02.2016 13:42:08
Alex
Servus,
ich habe ein Problem: bei folgenden Code bekomme ich zum Teil die Fehlermeldung
Laufzeitfehler 91: Objektvariable oder With-Blocker nicht festgelegt.
Habe mit '''' markiert an welcher Stelle, der Fehler auftaucht.
Grob: die Funktion befüllt 2 Listboxen, eine aus dem aktivem Sheet, die andere durchsucht alle anderen Sheets. Die Listboxen werden dynamisch befüllt bei jeder Änderung des Suchbegriffs...
Danke für die Hilfe!
Gruß Alex
Private Sub TextBox2_Change()
Application.ScreenUpdating = False
ListBox1.Clear
ListBox2.Clear
If TextBox2 = "" Or TextBox2 = " " Or Len(TextBox2) 

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 93
26.02.2016 13:46:05
otto
Hi,
denke es muss hier heisen:
Loop Until wksrng.Address = saAddress
otto

AW: Laufzeitfehler 93
26.02.2016 13:47:52
Michael
Hi Alex,
Du solltest Dir angewöhnen, Deinen Code schöner einzurücken, damit man besser sieht, was zusammengehört.
Wenn Du Dir das "Standardbeispiel" ansiehst: https://www.herber.de/mailing/vb/html/xlmthfindx.htm
wirst Du feststellen, daß in der Loop Until AUCH überprüft wird, ob wksrng nothing.
Das müßte es sein.
Schöne Grüße,
Michael

Anzeige
AW: Laufzeitfehler 93
26.02.2016 14:00:01
Alex
Hallo zusammen,
@Otto, habe ich geändert, aber lag nicht dadran
@Michael, habe set = nothing rausgenommen, ändert leider auch nichts.
Ja den Code habe ich mir zusammengekloppt und kurz geschrieben...
Funktioniert leider ja noch nicht :(?
Danke!

AW: Laufzeitfehler 93
26.02.2016 14:26:40
Michael
Hi Alex,
hier die erste Hälfte kommentiert bzw. mit Fragen versehen:
Private Sub TextBox2_Change()
Dim rng As Range
Dim sAddress As String
Dim wksrng As Range
Dim saAddress As String
Dim wks As Worksheet
' zuerst Variablen deklarieren, dann Code...
ListBox1.Clear
ListBox2.Clear
If TextBox2 = "" Or TextBox2 = " " Or Len(TextBox2) 
Schöne Grüße,
Michael

Anzeige
AW: Laufzeitfehler 93
28.02.2016 12:35:12
Alexander
Hey Michael,
vielen Dank schon einmal!
''' Kategorie ist global as Worksheets definiert, da mehrere Userform auf Kategorie gleichzeitig zugreifen
''' Die 2 Änderungen habe ich übernommen, aber daran lag die Fehlermeldung jetzt nicht.
Viele Grüße,
Alex

AW: Laufzeitfehler 93
28.02.2016 13:43:43
Mullit
Hallo,
böse Falle, Du weist hier Deine String Variable sAddress aus dem ersten Loop zu, es müsste saAddress heißen...
'...
If Not wksrng Is Nothing Then
saAddress = wksrng.Address
Do
With ListBox2
.ColumnCount = 2
.AddItem wksrng.Text
.List(.ListCount - 1, 1) = wks.Range("B1")
End With
'  ListBox2.AddItem wksrng.Text
Set wksrng = Cells.FindNext(after:=wksrng)
Loop Until wksrng.Address = sAddress
'...

Gruß, Mullit

Anzeige
AW: Laufzeitfehler 93
29.02.2016 08:33:41
Alex
Hey,
habe mal alle Änderungen bis jetzt übernommen, aber der Fehler taucht leider
immer noch auf bei: Loop Until wksrng.Address = saAddress

Option Explicit
Public Kategorie As String
Private Sub TextBox2_Change()
Dim rng As Range
Dim sAddress As String
Dim wksrng As Range
Dim saAddress As String
Dim wks As Worksheet
ListBox1.Clear
ListBox2.Clear
If TextBox2 = "" Or TextBox2 = " " Or Len(TextBox2) 

Anzeige
AW: Laufzeitfehler 93
29.02.2016 09:18:26
Mullit
Hallo,
böse_Falle_Part_II: Du hast nicht nur die Stringvariable aus dem ersten Loop verwendet, sondern _ referenzierst auch auf Sheets(Kategorie) aus dem ersten Loop bei Deinem FindNext-Aufruf im zweiten Loop, Du mußt auf die Laufvariable wks Deines For-Each-Loops referenzieren:

'... Set Rng = Nothing
                  For Each wks In Worksheets
                      Set wksrng = wks.Cells.Find(what:=TextBox2.Text, after:=ActiveCell, _
LookIn:=xlFormulas, LookAt:= _
                      xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
_
                      , SearchFormat:=False)
                         If Not wksrng Is Nothing Then
                         saAddress = wksrng.Address
                              Do
                                   With ListBox2
                                  .ColumnCount = 2
                                  .AddItem wksrng.Text
                                  .List(.ListCount - 1, 1) = wks.Range("B1")
                                   End With
                                   Set wksrng = wks.Cells.FindNext(after:=wksrng)
                              Loop Until wksrng.Address = saAddress
                        End If
    Next wks
'...

Gruß, Mullit

Anzeige
AW: Laufzeitfehler 93
29.02.2016 09:56:35
Alex
Hey Mullit,
mein persönlicher Held :)!!!
Daran habe ich wirklich nicht gedacht, WKS dort miteinzubeziehen.
Beschäftige mich noch nicht so lange mit VBAs, daher entgehen mir ab und zu solche Sachen noch.
Danke!
Gruß Alex
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige