Clever-Excel-Forum

Normale Version: Unverständlicher Laufzeitfehler 91
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe aktuell ein Problem bei welchem ich am Verzweifeln bin, weil ich keine Systematik dahinter erkenne. Es geht um nachfolgenden Ausschnitt eines Codes:


Code:
Dim g as integer
dim y as integer
Dim maxzahl As Range

g = 0

For y = 1 To 20

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

line40:
    g = g + 1
    Worksheets("Tabelle 2").Cells(83, 61 + g) = maxzahl.Offset(0, -7)
    Worksheets("Tabelle 2").Cells(83, 62 + g) = maxzahl.Offset(0, -6)

line50:
Next


Was steckt dahinter: Ich habe im Blatt "Tabelle 1" in der Spalte "L28:L47" Zahlen stehen (Zellen können aber auch teilweise leer sein). Ich möchte nun den angegebenen Bereich nach allen hinterlegten Zahlen durchsuchen (mit der höchsten beginnend) und wenn er eine Zahl gefunden hat etwas ins Blatt "Tabelle 2" kopieren.

Kopiere ich den aufgeführten Code-Schnipsel in ein neues Excel-Blatt, funktioniert es einwandfrei. Im kompletten Programm kommt es beim Durchlauf aber immer wieder zu einem Fehler. Er zeigt mir dann in der Zeile "MsgBox..." keine Zahl an, obwohl in den zu durchsuchenden Zellen definitiv Zahlen hinterlegt sind.
Des Weiteren kommt es dann zu einem "Laufzeitfehler 91, Objektvariable oder with-Blockvariable nicht festgelegt" sobald er in der Zeile "If Not maxzahl is Nothing..." ist. 
Ich verstehe nicht warum. Auch weil es im kompletten Programm manchmal funktioniert und manchmal nicht. Es reicht teils Excel neu zu starten, oder den Suchbereich zu verändern, oder Teile des restlichen Codes auszukommentieren und es läuft plötzlich wieder, nur um beim erneuten Durchlauf wieder den Fehler anzuzeigen.

Kann es sein, dass in den nachfolgenden Programmzeilen (oder davor) etwas hinterlegt ist, dass diesen Fehler provoziert? Sind meine Variablen falsch deklariert?
Wenn jemand einen Tipp für mich hätte woran es liegen könnte, wäre ich sehr dankbar.

Danke und Gruß
Sebbo
nur ein Verdacht, 

die msgbox sollte in die if not is nothing abfrage rein und nicht davor. 

wenn maxzahl nothing ist, dann knallt es beim offset weil die Bedingungen in der gleichen Zeile stehen 

If Not maxzahl Is Nothing And maxzahl.Offset(0, 1) = "" And maxzahl > 1 Then

ich würde es so aufstellen.
If Not maxzahl Is Nothing then 
  msgbox maxzahl
  if maxzahl.Offset(0, 1) = "" And maxzahl > 1 Then
  else 
  end if 
end if


gruß 
rb
Hi Ralf,

vielen Dank erst mal für deine Hilfe! :)

Ich habe den Code entsprechend angepasst. Der Fehler selbst konnte damit allerdings nicht behoben werden, er hat sich nur in die nachfolgende Zeile verschoben. Er springt jetzt nach der "If Not..." Zeile direkt zu "End If", weil für die Variable maxzahl wohl keinen Wert gefunden hat.

Code:
Worksheets("Tabelle 2").Cells(83, 61 + g) = maxzahl.Offset(0, -7)

Die MsgBox Zeile hatte ich eingefügt, um zu prüfen, ob er den höchsten Zahlenwert überhaupt findet. Hier zeigt sich aber, dass er das nicht tut, obwohl sich in den zu durchsuchenden Zellen mehrmals Zahlen befinden. Doch warum findet er die Zahlen nicht?
manchmal sind Zahlen auch nur Text.  Sieht man aber nicht gleich. 

wofür sind die Sprungmarken denn gedacht? Der zutreffende Code kann doch in die IF Zweige.