• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Das neue Jahr beginnt wie das alte - natürlich mit einem neuen Fotowettbewerb! Auch im Monat Januar freuen wir uns auf Eure Einsendungen. Wie es weitergeht, wisst Ihr ja - Hier geht es lang --> 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

Dinofelis

Gast
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"