Laufzeitfehler
#1
Hallo,

ich habe ein Makro geschrieben und es funktioniert auch so wie es soll.
nur leider bekomme ich immer wieder eine Laufzeitfehler '1004':
Könnte mir jemand helfen diesen zu beheben?


Code:
Option Explicit
Sub Rechner()
'Zelle auswählen
ActiveWorkbook.Worksheets("Rechner").Select
Dim i As Integer
Dim c As Variant

i = 2
 For Each c In Range("o2:o4000")
 Cells(i, 1).Value = DateAdd("m", -30, c.Value)
 Cells(i, 2).Value = DateAdd("m", -21, c.Value)
 Cells(i, 3).Value = DateAdd("m", -6, c.Value)
 'Freigabe Status
 
 If Cells(i, 5).Value = "P-FG" Then
   Cells(i, 2).Interior.ColorIndex = 3
    Cells(i, 1).Interior.ColorIndex = 4
     Cells(i, 3).Interior.ColorIndex = 3

 
End If
 If Cells(i, 5).Value = "B-FG" Then
  Cells(i, 2).Interior.ColorIndex = 4
    Cells(i, 1).Interior.ColorIndex = 4
     Cells(i, 3).Interior.ColorIndex = 3

   End If
 

If Cells(i, 5).Value = "K-FG" Then
  Cells(i, 3).Interior.ColorIndex = 4
  Cells(i, 2).Interior.ColorIndex = 4
  Cells(i, 1).Interior.ColorIndex = 4

 End If
 
 i = i + 1


 


 


'keine  Freigabe

If Cells(i, 5).Value = Empty Then
       Cells(i, 5).Interior.ColorIndex = 3
       Cells(i, 1).Interior.ColorIndex = 3
       Cells(i, 2).Interior.ColorIndex = 3
       Cells(i, 3).Interior.ColorIndex = 3
       Cells(i, 5).Value = "!ACHTUNG!"
       
 
 
   End If
   Next
   End Sub
 
 
Dankeschön
Top
#2
Hi,

wenn ein Programm, das im allgemeinen funktioniert immer wieder mal stehen bleibt, dann liegt das in der Regel an den Daten, die nicht wie erwartet vorliegen.

Wenn der Fehler auftritt müsstest du eigentlich sofort zu der entsprechenden Zeile im Code springen können, und gucken, wo das Problem liegt. Welchen Wert hat dann i?

Ich vermute mal, dein Dateadd stolpert über eine Zelle die leer oder 0 ist.

fg, MM
Top
#3
Ja  also Debugger zeigt mir diese Zeile an
Code:
Cells(i, 1).Value = DateAdd("m", -30, c.Value)



I = 589

wie Umgehe ich das Problem mit den Leeren Zeilen?

Dankeschön schon mal
  Angel
Top
#4
Hallo,

falls es sich wirklich um eine leere Zelle handelt und um keine Formel bzw. Text

Code:
If Not IsEmpty(c.Value) Then
   Cells(i, 1).Value = DateAdd("m", -30, c.Value)
   Cells(i, 2).Value = DateAdd("m", -21, c.Value)
   Cells(i, 3).Value = DateAdd("m", -6, c.Value)
End If
Gruß Stefan
Win 10 / Office 2016
Top
#5
Ja gut so taucht keine Fehler Meldung mehr auf.

aber so gibt es Probleme mit dieser Zeile
Code:
If Cells(i, 5).Value = Empty Then
     Cells(i, 5).Interior.ColorIndex = 3
     Cells(i, 1).Interior.ColorIndex = 3
       Cells(i, 2).Interior.ColorIndex = 3
       Cells(i, 3).Interior.ColorIndex = 3
     Cells(i, 5).Value = "!ACHTUNG!"
End if

er schreibt mir dann ja in jede Leere Zeile ein !ACHTUNG!
Top
#6
Hallo,

was hat Spalte E mit der Spalte O bzw. mit den Spalten A bis C zu tun?
Gruß Stefan
Win 10 / Office 2016
Top
#7
in A-C wird das zurück gerechnete Datum aus O geschrieben.


In Zeile E  steht ein Wert der mir sagt ob es eine bestimmte "Freigabe" gab.

wenn E leere ist wurde keine Freigabe ausgesprochen, diese soll er angezeigt werden indem in die entsprechende Leere zeile ein Achtung geschrieben wird.


Ich hoffe es ist irgendwie verständlich :20:
Top
#8
Hallo,

nein, das ist für mich weiterhin unverständlich. Ich kann bis jetzt nicht erkennen, wie sich es auf die Spalte E auswirkt, wenn in den Spalten A bis C ein zurück gerechnetes Datum eingetragen wird (bzw. nicht eingetragen wird).
Gruß Stefan
Win 10 / Office 2016
Top
#9
Wenn in der Spalte E kein Eintrag ist, wir die FarbFüllung von A-B-C in Rot formatiert
und gleichzeitig wird ein !ACHTUNG! geschrieben in das leere Feld von E.



Also wenn man es so betrachtet hat das zurück rechnen des Datums  keine Auswirkungen auf E

1. Datum Berechnung, ist Datum Zeile O Soll Datum A-B-C

2. Abfrage Inhalt Zeile E : "Hallo, A-B-C  = grün" "Tag,A-B = grün  C = Rot" "Abend, A = Grün B-C = Rot" " Kein Eintrag, A-B-C = rot, E =" !ACHTUNG!"


.......das macht mich ein bisschen Wahnsinnig :D :D
Top


Gehe zu:


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