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?"