Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

1004

  • 1004 von Franz W. vom 12.04.2003 - 08:56:51
    • Re: 1004 von Christian vom 12.04.2003 - 09:23:58
      • Re: 1004 von Franz W. vom 12.04.2003 - 09:38:23
    • Re: 1004 von Christian vom 12.04.2003 - 09:23:57
      • Re: 1004 von andre vom 12.04.2003 - 10:32:05
        • Re: 1004 von Franz W. vom 12.04.2003 - 18:52:24

Betrifft: 1004
von: Franz W.
Geschrieben am: 12.04.2003 - 08:56:51

Guten Morgen Fachleute,

ich kriege Laufzeitfehler 1004, Anwendungs- oder objektdefinierter Fehler und hab keine Ahnung warum.

Folgender Code klappt:


Sub wievielnoch()
    For t = 4 To 59 Step 5
        For m = 3 To 33
            If Cells(t, m) <> "" And Cells(t - 2, m) > Date _
                    And (Cells(t, m - 1) = "" Or Cells(t, m - 1) = "Termin") Then
                ActiveSheet.Unprotect
                Range("AC1") = Cells(t - 2, m)
                MsgBox "Nächster Zeitraum ab dem " & Format([AC1], "d. mmmm") & _
                   " " & Chr(13) & Chr(13) & "das ist in  " & [AJ57] & _
                    " Tagen", 64
                ActiveSheet.Protect
                Exit Sub
            End If
        Next m
    Next t
End Sub

Aber nach einer kleinen Änderung gibts den Laufzeitfehler:


Sub wievielnoch()
For t = 4 To 59 Step 5
For m = 3 To 33
If Cells(t, m) <> "" And Cells(t - 2, m) > Date _
And (Cells(t, m - 1) = "" Or Cells(t, m - 1) = "Termin") _
And (Month(Date) > 1 And Cells(t - 5, 28) = "") Then
ActiveSheet.Unprotect
Range("AC1") = Cells(t - 2, m)
MsgBox "Nächster Zeitraum ab dem " & Format([AC1], "d. mmmm") & _
" " & Chr(13) & Chr(13) & "das ist in " & [AJ57] & _
" Tagen", 64
ActiveSheet.Protect
Exit Sub
End If
Next m
Next t
End Sub

Der Zusatz ist: And (Month(Date) > 1 And Cells(t - 5, 28) = "") in der If-Abfrage.


Könnt Ihr mir bitte helfen?

Vielen Dank im Voraus

Franz

P.S.: Sorry, weiß nicht warum er den zweiten Code anders schreibt...


  

Re: 1004
von: Christian
Geschrieben am: 12.04.2003 - 09:23:57

H Franz,
der Fehler tritt auf, weil dein Zusatz (Month(Date) > 1 And Cells(t - 5, 28) = "") eine unzulässige Reihe ausspucht (Variable t steht auf 4 und du ziehst 5 ab). Das Cellobject das du ansprechen willst gibt es nicht => Error 1004.

Tip: Solche Fehler findest du einfach, indem du in der Fehlermessagebox den Button "Testen" anwählst. Dann einfach mit der Maus einmal über das Cellsobject gehen. Dort steht dann der Fehler. Weiter auf die variable t liefert schliesslich den Wert 4.

Hoffe das hilft fürs erste weiter.

Gruss Christian

  

Re: 1004
von: Christian
Geschrieben am: 12.04.2003 - 09:23:58

H Franz,
der Fehler tritt auf, weil dein Zusatz (Month(Date) > 1 And Cells(t - 5, 28) = "") eine unzulässige Reihe ausspucht (Variable t steht auf 4 und du ziehst 5 ab). Das Cellobject das du ansprechen willst gibt es nicht => Error 1004.

Tip: Solche Fehler findest du einfach, indem du in der Fehlermessagebox den Button "Testen" anwählst. Dann einfach mit der Maus einmal über das Cellsobject gehen. Dort steht dann der Fehler. Weiter auf die variable t liefert schliesslich den Wert 4.

Hoffe das hilft fürs erste weiter.

Gruss Christian

  

Re: 1004
von: Franz W.
Geschrieben am: 12.04.2003 - 09:38:23

Hallo Christian,

danke für Deine Antwort. Dass es die t - 5 nicht gibt, stimmt wenn ich im Januar bin. Die Monate sind untereinander ab Zeile 2, jeder Monat hat 5 Zeilen ( Januar Z. 2-6, Februar 7-11, ...). Und darum dachte ich hätte ich den Fehler mit dem "If Month(Date) > 1" abgefangen, dass das Ganze also erst ab Februar gilt. Und dann (z.B. im Februar) wäre t-5 die Zeile 4. Und die gibt es.

Und genau darum geht es: Wenn es z.B. einen markierten Bereich vom 25. Januar bis 10. Februar gibt, und den nächsten ab dem 7. April, dann soll er z.B. am 28. Januar nicht den 1. März angeben, sondern eben den 7. April.

Was hab ich denn da noch für einen Haken drin?

Gruß
Franz

  

Re: 1004
von: andre
Geschrieben am: 12.04.2003 - 10:32:05

hallo christian,
excel prüft in einer sammlung von bedingungen jede. wenn du eine reihenvolge der prüfung von bedingungen festlegen willst, musst du die if verschachteln.
gruss andre

  

Re: 1004
von: Franz W.
Geschrieben am: 12.04.2003 - 18:52:24

Hallo Andre,

hab das jetzt erst gesehen, danke für die Antwort. Bin schon dran die if zu verschachteln. Hab aber am Sheet noch was geändert, drum bin ich noch dran. Melde mich ggflls. noch mal.

Danke und Gruß
Franz