Microsoft Excel

Herbers Excel/VBA-Archiv

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

Worksheet_BeforeSave will nicht gehen?! Fehler?

Betrifft: Worksheet_BeforeSave will nicht gehen?! Fehler? von: Markus
Geschrieben am: 31.08.2004 09:56:23

Hallo zusammen,

Schön das es noch hilfsbereite Menschen gibt, von denen man noch was lernen kann. Ich frag mich nur wieso folgendes Listing nicht funktioniert. Könnt ja mal nene kurzen Blick drauf werfen?!
Es soll bewirken, daß bevor die Datei gespeichert wird (also über Speichern unter) die angegebenen Zellen auf Inhalt geprüft werden sollen.
Die Datei darf unter keinen Umständen gespeichert werden, wenn zu dem eingefügten Datum der dazu passende Name in der Zelle darunter fehlt.

Unter http://msd2004.tripod.com/ohne_daten.zip findet ihr ne Demo
und hier ein Bild http://msd2004.tripod.com/vba.htm.

Vielen Dank. Gruss Markus

vor dem before_beforesave ist noch ein Worksheet_Change. Ich denke dass dies die Funktion von Change nicht beeinflusst.

'

Private Sub Worksheet_Change(ByVal Target As Range)
' Inhalt


Private Sub Worksheet_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Application.EnableEvents = False

Select Case Target.Address
Case Cells(81, 17).Address
     Cells(81, 28).Address
     Cells(81, 39).Address
     Cells(81, 50).Address
     Cells(83, 6).Address
     Cells(83, 17).Address
     Cells(83, 28).Address
     Cells(83, 39).Address
     Cells(83, 50).Address

    If Cells.Value = Date And Cells(Target.Row - 1, Target.Column) = " " Then
    MsgBox "Arbeitsmappe kann nicht gespeichert werden! "
    Cancel = True
    Else
    Cancel = False
    End If
End Select
    
Application.EnableEvents = True
End Sub

  


Betrifft: AW: Worksheet_BeforeSave will nicht gehen?! Fehler? von: Uduuh
Geschrieben am: 31.08.2004 12:50:15

Hallo,
so wie ich das sehe ist Target Nothing, hat also auch keine Address.
Ich vermute, du willst Target aus einem vorhergehenden Change-Ereignis verarbeiten. Definiere eine Public-Variable (Public tmpTarget as Range) und weise die im Worksheet_Change zu: Set tmpTarget=Target und ersetze in before_save Target durch tmpTarget.
Die Select Case Abfrage ist auch falsch.
Select case tnpTarget.Adrress(0,0)
Case "Q81", "AB81","AM81",....
If Cells.Value =Date .... -- Cells repräsentiert alle Zellen.
Ich vermute so: if tmpTarget.Value=Date and tmptarget.offset(-1,0).Value="" Then

Gruß aus'm Pott
Udo


  


Betrifft: AW: habs gemacht, aber versteh ich net so ganz von: Markus
Geschrieben am: 31.08.2004 13:37:04

Hallo,

Danke für die schnelle Antwort. Hab das versucht mal umzusetzen, was du gesagt hast. Folgende Fehlermeldung erscheint:
Zeile1:

Deklaration eintspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mir demselben Namen.

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean, Datumeingabe As Range)
Application.EnableEvents = False
Public Datumeingabe As Range

Set Datumeingabe = Target
 
Select Case Datumeingabe.Address(0, 0)
Case "F81", "Q81", "AB81", "AM81", "AX81", "F83", "Q83", "AB83", "AM83", "AX83"

    If Datumeingabe.Value = Date And Cells(Datumeingabe.Row - 1, Target.Column) = " " Then
    MsgBox "Arbeitsmappe kann nicht gespeichert werden! "
    Cancel = True
    Else
    Cancel = False
    End If
End Select
    
Application.EnableEvents = True
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Worksheet_BeforeSave will nicht gehen?! Fehler?"