Laufzeitfehler 1004

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Laufzeitfehler 1004
von: Albert
Geschrieben am: 04.11.2015 13:05:20

Hallo zusammen,
ich hab vorhin in ein Tabellenblatt folgenden Code geschrieben.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Counter As Long
Dim Bereich As Range
With Sheets("Gefahrenaufnahme")
    Set Bereich = .Range("E22:E25;J22:J26;O22:O26;T24:T26")
    
    'Hier den Bereich anpassen
    Set Target = Application.Intersect(Target, Bereich)
    'Set Target = Application.Intersect(Target, Range("E22:E25; J22:J26"))
    
    'Wenn nicht innerhalb des Bereiches wird die Prozedur verlassen
    If Target Is Nothing Then Exit Sub
    
    'Sheets("Gefahrenaufnahme").Unprotect Password:="1"
    
    'Errorhandling aktivieren, um im Falle eines Fehlers die Ereignisse am Ende wieder zu  _
aktivieren
    On Error GoTo ErrorHandler
    
    'Ereignisse ausschalten, um das Change-Ereignis nicht erneut auszulösen
    'Application.EnableEvents = False
    Application.DisplayAlerts = False
    
    
    'Eine Range-Variable deklarieren
    Dim rngZelle As Range
    
    'jede Zelle innerhalb des Target-Bereiches durchlaufen
    For Each rngZelle In Target
        'Prüfen, welche Zellfarbe vorhanden ist
        If .Cells(rngZelle.Row, rngZelle.Column).Interior.ColorIndex = xlNone Then
           .Cells(rngZelle.Row, rngZelle.Column).Interior.Color = RGB(255, 255, 0)
           Exit For
        Else
            .Cells(rngZelle.Row, rngZelle.Column).Interior.ColorIndex = xlNone
            Exit For
        End If
    
    Next rngZelle
    
    Counter = 0
    
    For Each rngZelle In .Range("A22:T26")
        If Cells(rngZelle.Row, rngZelle.Column).Interior.Color = RGB(255, 255, 0) Then
            Counter = Counter + Cells(rngZelle.Row, rngZelle.Column).Value
        End If
    
    Next rngZelle
    
    'Endergebnis der Berechnung einfügen
    .Cells(28, 4).Value = Counter
    
    Cancel = True
End With
ErrorHandler:
    Application.EnableEvents = True   'Ereignisse wieder einschalten
    Application.DisplayAlerts = True
End Sub
Auf meinem Rechner läuft der Code wie geschmiert. Nun ruft mich eine
Kollegin an, die diese Datei auf ihrem Rechner auch benützen sollte.
Nun kommt bei ihr der Laufzeitfehler 1004 mit dem Hinweis auf die Range-Methode.
Ich weiß nicht mehr weiter und auch nicht wirklich, wonach ich bei Google
suchen sollte.
Neustart bei dem anderen Rechner haben wir gemacht!
Wäre euch um Hilfe echt dankbar!
Gruß
A.

Bild

Betrifft: AW: Laufzeitfehler 1004
von: Uduuh
Geschrieben am: 04.11.2015 18:50:23
Hallo,
da fehlt der . vor Cells.

    For Each rngZelle In .Range("A22:T26")
        If Cells(rngZelle.Row, rngZelle.Column).Interior.Color = RGB(255, 255, 0) Then
            Counter = Counter + Cells(rngZelle.Row, rngZelle.Column).Value
        End If
    
    Next rngZelle

Warum arbeitest du anstatt mit
Cells(rngZelle.Row, rngZelle.Column)
nicht mit rngZelle?
        If rngZelle.Interior.Color = RGB(255, 255, 0) Then
            Counter = Counter + rngZelle.Value
Gruß aus’m Pott
Udo


Bild

Betrifft: AW: Laufzeitfehler 1004
von: Albert
Geschrieben am: 05.11.2015 08:34:32
Guten Morgen zusammen,
bei der Zeile...
Set Bereich = .Range("E22:E25;J22:J26;O22:O26;T24:T26")
sind die einzelnen Bereiche mit Union(.range("E22:E25"), .Range("J22:J26"), usw. usw. usw.)
zu beschreiben!
Danke für deine Hilfe
Gruß
A

Bild

Betrifft: AW: Laufzeitfehler 1004
von: matthias
Geschrieben am: 05.11.2015 08:40:37
Hallo Uduuh,
das stimmt nicht, mit einem Komma statt Semikolon als Trennzeichen funktioniert auch seine Schreibweise. Kann man übrigens sehr gut ausprobieren.

Sub test()
Dim rRange As Range, rZelle As Range
Set rRange = Range("E22:E25,J22:J26,O22:O26,T24:T26")
For Each rZelle In rRange
    MsgBox rZelle.Address
Next
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler 1004"