Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Laufzeitfehler 91: Objekt- oder Withblockvariable nicht festgelegt
#1
Hallo zusammen,

ich bräuchte bitte euren Rat zu nachfolgendem Code:

Code:
Option Explicit
Sub test()

Dim maxzahl As Range
Dim y As Integer

For y = 1 To 20

    Set maxzahl = Worksheets("Tabelle1").Range("L28:L47").Find(What:=Application.WorksheetFunction.Large(Worksheets("Tabelle1").Range("L28:L47"), y))
    MsgBox maxzahl
    If Not maxzahl Is Nothing Then
    If maxzahl.Offset(0, 1) = "" And maxzahl > 1 Then
    GoTo line40
    Else
    GoTo line50
    End If
    End If
Next

line40:
line50:

End Sub

Ich möchte hier mit der höchsten Zahl beginnend die Zahlen in ihrer Größe abfragen. Funktioniert auch soweit, insofern ich den Bereich ("L28:L47") als "Standard" oder "Zahl" ohne Nachkommastelle formatiert habe und nur ganze Zahlen im Suchbereich sind. Allerdings schreibe ich vorab über ein anderes Makro die zu durchsuchenden Zahlen mit 2 Nachkommastellen in den Bereich ("L28:L47"). Sobald ich nun das Makro starte, bekomme ich in der Zeile "MsgBox maxzahl" den Fehler "Laufzeitfehler 91: Objekt- oder Withblockvariable nicht festgelegt".

Wie muss ich den Code ändern, dass er mir auch bei den Zahlen mit zwei Nachkommastellen nicht mehr diesen Fehler bringt? Ist meine Variablendeklaration für "maxzahl" und/oder "y" falsch gewählt? Ich stehe leider gerade total auf dem Schlauch :(
Antworten Top
#2
Hallo Sebbo,

was soll die MsgBox denn anzeigen?
maxzahl ist ein Range. Das kann die MsgBox nicht anzeigen.
Willst Du den Wert sehen, versuche mal
Code:
MsgBox maxzahl.value
Für die Adresse versuche mal:
Code:
MsgBox maxzahl.AddressLocal(columnabsolute = False, rowabsolute = False)
(ist ungetestet...)

Gruß,
Lutz
Antworten Top
#3
Hi,

die Find-Methode hat ne ganze Menge Parameter - siehe Onlinehilfe mit F1. Wenn man sie nicht angibt, wird die zuletzt verwendete Einstellung aus dem Dialog "Suchen" übernommen.
Du hast nur den ersten Parameter what angegeben - den Rest nicht.
Ergo: Gib alle notwendigen Parameter explizit an.
Antworten Top
#4
Hallo ihr beiden,

vielen Dank für euer Feedback.

Ich muss sagen, das nach ein bisschen Online Recherche und weiteren Tests sich das eigentliche Problem wohl doch etwas anders gestaltet.
Der Fehler tritt nicht in Abhängigkeit zur Formatierung der zu durchsuchenden Zellen auf, sondern exakt jedes Mal wenn ich das Makro zum zweiten Mal starte.
Heißt beim ersten Mal läuft es sauber durch und erkennt auch die gesuchten Zahlen korrekt, bei Wiederholdurchläufen kommt dann der genannte Laufzeitfehler 91.

Wenn ich anderen Foren/Meldungen im Netz dazu Glauben schenken darf, wohl ein Resultat von "schlampiger" bzw. in meinem Fall laienhafter Programmierung.
Der Code selbst ist auch nur der erste Teil von dreien. Ich habe nun nach dem Trial & Error Prinzip mal die anderen beiden Code-Teile auskommentiert und siehe da, dann funktioniert der hier von mir gepostete Teil tadellos. Auch bei wiederholter Anwendung. Ich verstehe zwar weder wie das zusammenhängen kann, da in den beiden anderen Code Teilen die Variable "maxzahl" welche hier den Fehler liefert keine Verwendung findet, noch warum das komplette Makro immer einmal läuft und dann nicht mehr, aber ich bin leider auch kein VBA Experte.

Ich werde mich wohl oder übel mal durch den kompletten Code arbeiten müssen in der Hoffnung den verantwortlichen Fehler zu finden.

@Lutz: Die Zeile mit der Msg Box hatte ich nur implementiert um zu sehen, ob er für maxzahl einen Wert findet. Trotz der Deklaration als "Range" zeigt mir das Makro auch die gesuchten Zahlen an.
@Boris: Danke für deinen Hinweis, ich muss mich da mal einlesen, evtl. kann ich es tatsächlich auch mit zusätzlichen Parametern beim Find-Befehl lösen.

Viele Grüße
Sebbo
Antworten Top
#5
Hi,

Du schreibst ja selbst von "laienhafter Programmierung" als Ursache des Problems. Das ist KEIN Vorwurf!

Zitat:evtl. kann ich es tatsächlich auch mit zusätzlichen Parametern beim Find-Befehl lösen


Dann kann ich Dir aber nur raten, dass "evtl." zu streichen. Den Grund dafür hatte ich Dir bereits genannt.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste