• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Benötige Hilfe bei Excel VBA!

iMate

Querina
Registriert
11.01.10
Beiträge
186
Hei Leute,

Ich weiss nicht warum aber bei mir tritt immer ein Fehler auf wenn ich ein Makro ausführen möchte.

Laufzeitfehler 91
http://www.eggheadcafe.com/software...-oder-withblockvariable-nicht-festgelegt.aspxObjektvariable oder With-Blockvariable nicht festgelegt

Ich weiss nicht was ich falsch mache oder was das bedeutet. Ich arbeite mit MS Office '11
Hier mein Makro:
Sub Ampfer()
'Farbliche Auswertung der einzelnen Pollenarten

Dim Ampfer As Object
For Each Object In Range("B4:DS4")
If Ampfer.Value < 15 Then
Ampfer.Interior.ColorIndex = 44
ElseIf Ampfer.Value > 15 < 24 Then
Ampfer.Interior.ColorIndex = 45
ElseIf Ampfer.Value > 24 Then
Ampfer.Interior.ColorIndex = 46
End If
Next
End Sub


Besten Dank für die Hilfe
 
  • Like
Reaktionen: Dinofelis
Laufzeitfehler 91
http://www.eggheadcafe.com/software...-oder-withblockvariable-nicht-festgelegt.aspxObjektvariable oder With-Blockvariable nicht festgelegt

VBA ist bei mir schon etwas her. Könnte jetzt falsch sein, was ich sage, aber vielleicht hilft es trotzdem auf die Spur.

Ich glaube, dein Objekt ist nicht richtig deklariert. Die in der Schleife angesprochenen Attribute gehören zu einer bestimmten Klasse, aber "Dim Ampfer As Object" ist generisch und deklariert diese nicht. Nach der Deklaration muss eine weitere Zeile erfolgen, die "Ampfer" einer Klasse zuweist bzw. das konkrete Objekt einer Klasse zuweist. Und ganz am Ende von Methoden sollte bei Verwendung von Objekten diese auch immer mit "Set xyz to Nothing" auf Nothing gesetzt werden (das löst aber nicht die Fehlermeldung aus).

Dann gibt es noch folgendes Problem: "Range" kann keine Objekte enthalten, sondern nur (Excel-) "Range"-Bereiche.

Darüber hinaus einen Tipp für die Lesbarkeit von Blöcken durch Verwendung von "With":

Code:
With Ampfer
    If .Value < 15 Then
       .Interior.ColorIndex = 44
    ElseIf .Value > 24 Then
       .Interior.ColorIndex = 46
    End If
End With

Und gerade noch dieses hier entdeckt, das dürfte so ebenfalls nicht funktionieren:

"ElseIf .Value > 15 < 24 Then"

Da brauchst du wahrscheinlich eine "AND"-Verknüpfung, wenn sich VBA nicht geändert hat.Ich bin mir nur nicht mehr über die genaue Syntax sicher, also ob tatsächlich "AND" als Operator verwendet wird.

"ElseIf ((.Value > 15) And (.Value < 24)) Then"