Microsoft Excel

Herbers Excel/VBA-Archiv

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

Hab Problem mit FOR-Schleife. Bitte um Hilfe.

Betrifft: Hab Problem mit FOR-Schleife. Bitte um Hilfe. von: madfromvba
Geschrieben am: 31.08.2004 18:41:07

Hallo,

Ich hab ein Problem mit dieser FOR Schleife.
Und zwar:
Wie auf diesem Bild zu sehen ist läuft die for schleife durch den ganzen festgelegten bereich Range("F82,.....,AX84"). sie soll aber, wenn sie auf eine Zelle im Bereich UND auf ein leeres Datumsfeld eine Zeile über dem Zellenbereich --> (Zelle.Offset(-1, 0) trifft, die speicherung zulassen.
Hintergrund ist, dass zu einem Datum immer ein Name gehört.
Auf dem Bild sieht man die selektierte Zelle. Hier dürfte die Meldung nicht mehr erscheinen und die Speicherung zugelssen werden.

hab ich das verständlich geschrieben?

wie kann ich das realisieren?

Danke vielmals!



Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Worksheets("Blatt 1").Activate

Dim Zelle
Dim Bereich As Range
Set Bereich = Range("F82,Q82,AB82,AM82,AX82,F84,Q84,AB84,AM84,AX84")

For Each Zelle In Bereich

Zelle.Select

If Not IsEmpty(Zelle) And IsDate(Zelle.Offset(-1, 0).Value) Then
'speichern
Else
'nicht speichern
MsgBox "Arbeitsmappe kann nicht gespeichert werden! Bitte tragen sie Ihren Namen ein!" & ActiveCell.Address & " ein!"
Cancel = True
Exit For
End If

Next Zelle

End Sub

  


Betrifft: AW: Hab Problem mit FOR-Schleife. Bitte um Hilfe. von: Luschi
Geschrieben am: 31.08.2004 21:12:15

Hallo madfromvba,

leider meldet mir der tripod-Server, daß das Bild nicht existiert, aber ich glaube
schon, Dein Problem verstanden zu haben. Du mußt die Technologie etwas umstellen.
Vor der For-Schleife wird eine Boolsche Variable gesetzt (ok = True). Dann wird die Schleife
durchlaufen. Wird dabei festgestellt, daß die geforderten Bedingungen nicht erfüllt
sind, wird die o.g. genannte Variable im Wahrheitswert umgedreht (ok = Not ok) und die
Schleife sofort verlassen. Sind die Bedingungen immer erfüllt, so läuft die Schleife
vollständig durch und die Variable bleibt unangetastet im Wert. Sie besitzt nach dem
Verlassen der Schleife noch den selben Wert wie vor dem Eintritt in die Schleife. Der
Wert der Variablen wird nach dem Verlassen der Schleife ausgewertet und das Speichern erlaubt oder untersagt.
Das sieht dann in der Praxis wie folgt aus:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Zelle, _
    Bereich As Range, ws As Worksheet, _
    ok As Boolean

Set ws = ActiveWorkbook.Worksheets("Blatt 1")
Set Bereich = ws.Range("F82,Q82,AB82,AM82,AX82,F84,Q84,AB84,AM84,AX84")

ok = True
For Each Zelle In Bereich
    If IsEmpty(Zelle) Or (Not IsDate(Zelle.Offset(-1, 0).Value)) Then
       ok = Not ok
       Exit For
    End If
Next Zelle

If (Not ok) Then
   MsgBox "Arbeitsmappe kann nicht gespeichert werden! Bitte tragen sie " & _
          "Ihren Namen  ein!" & Zelle.Address & " ein!"
   Cancel = True
End If
End Sub


Gruß von Luschi
aus klein-Paris


 

Beiträge aus den Excel-Beispielen zum Thema "Hab Problem mit FOR-Schleife. Bitte um Hilfe."