Microsoft Excel

Herbers Excel/VBA-Archiv

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

Verschachtelung geht, direkt nicht...

Betrifft: Verschachtelung geht, direkt nicht...
von: Franz W.
Geschrieben am: 12.04.2003 - 20:19:21

Hallo Forum,

war mit ähnlichem Problem heute schon mal da, gibt aber nun Neuerungen, darum erlaube ich mir einen neuen Thread.

Ich habe folgenden Code, der auch bestens 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 Then
                If (Cells(t, m - 1) = "" Or Cells(t, m - 1) = "Termin") Then
                    If Month(Cells(t - 2, m)) > 1 And Cells(t - 5, 30) = "" 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
                End If
            End If
        Next m
    Next t
End Sub

Wenn ich nun die If-Verschachtelungen auflöse in eine einzige If-Abfrage, gibt's den Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler. Dabei wird an den Abfragekriterien NICHTS VERÄNDERT !!!

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(Cells(t - 2, m)) > 1 And Cells(t - 5, 30) = "" 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

Kann mir das bitte jemand erklären? Bzw. eine Lösung dafür geben?

Vielen Dank im Voraus

Gruß
Franz



  

Re: Verschachtelung geht, direkt nicht...
von: Ramses
Geschrieben am: 12.04.2003 - 20:37:27

Hallo Franz,

Das konnte auch vorher nicht gehen :-)),... wenn die Bedingung zugetroffen hätte;

t = 4

du frägst in deiner Bedingung

And Cells(t - 5, 30 )

einen Wert ab der nicht existiert !!
Die Zell-Adresse wäre übersetzt

Cells(-1,30)

Pass den Bezug an, dann funktioniert es.

Gruss Rainer

  

Dumme Sache!
von: Franz W.
Geschrieben am: 12.04.2003 - 20:52:30

Hallo Rainer,

vielen Dank für Deine Antwort. Aber der obere Code geht! Wenn das aktuelle Datum nach dem Januar liegt (für das Problem, wenn man im Januar ist, hab ich noch nix gefunden; kommt später dran).

Die Tabelle ist ein Jahreskalender mit den Monaten untereinander beginnend ab Zeile 2, für jeden Monat 5 Zeilen.

Und t-5 ist schon genau das was ich will und ich erreiche damit auch, was ich will: dass nämlich ein zusammenhängender Zeitbereich über einen Monatswechsel auch als solcher erkannt wird.

Beste Grüße
Franz


  

Re: Dumme Sache!
von: Franz W.
Geschrieben am: 12.04.2003 - 20:55:08

Hallo Rainer,

dumme Sache ist der falsche Betreff! Damit war nicht Deine Antwort gemeint... War meine erste Reaktion auf Deine Antwort und war für mich selbst bestimmt ;-)))

Gruß
Franz

  

Re: Dumme Sache!
von: Ramses
Geschrieben am: 12.04.2003 - 21:15:22

Hallo Franz,

..dann habe ich dir leider keine Lösung bzw. mir fällt nichts anderes ein.
Wie schon gesagt, wenn ich den Bezug anpasse, läuft der Code einwandfrei.

Gruss Rainer

  

Re: Dumme Sache!
von: Franz W.
Geschrieben am: 12.04.2003 - 21:28:53

stimmt jetzt der Betreff?? :-)))

Hallo Rainer,

ok, vielen Dank. Ich schau mal ob mir ein anderer Ansatz einfällt. Oder ob ich ja mit der Verschachtelung weiterkomme. Danke für die Mühe.

Viele Grüße
Franz

 

Beiträge aus den Excel-Beispielen zum Thema "Verschachtelung geht, direkt nicht..."