AW: Code-Erweiterung um eine Spalte
17.01.2007 04:47:22
Luc:-?
Hallo Kristijan!
1. Die Zeile If Range("A2").Value <> "" And Range("B" & i).Value = "" Then vergleicht aber alle B-Zellen stets nur mit Zelle A2, kann also so gar nicht super klappen.
2. Und wenn einer was in B13 oder C13 schreibt aber A13 ist leer, soll kommen... Bitte erst Spalte A füllen.
Dieser Fall sollte mit meiner dir bereits geposteten Ereignisprozedur eigentlich abgefangen sein! Gehört auch nicht an diese Stelle - vor dem Dateidruck! Ansonsten...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Static DatumF As String, ZeitF As String
Dim i As Long, abb As Boolean
Const DatDef As String = "MM.TT.JJJJ", ZeitDef As String = "hh:mm:ss"
If IsEmpty(DatumF) Then DatumF = DatDef
If IsEmpty(ZeitF) Then ZeitF = ZeitDef
Rem Von Zeile 2 bis letzte volle in A
For i = 2 To Range("A65536").End(xlUp).Row
If Cells(i, 1).Value <> "" And (Cells(i, 2).Value = "" Then
di: DatumF = InputBox("Bitte eingeben!", "Fehlendes Datum", DatumF)
abb = abb Or (DatumF = "")
If DatumF = "" Then GoTo ni
If DatumF = DatDef Then GoTo di
Cells(i, 2).Value = DatumF
ElseIf Cells(i, 1).Value <> "" And (Cells(i, 3).Value = "" Then
zi: ZeitF = InputBox("Bitte eingeben!", "Fehlende Uhrzeit", ZeitF)
abb = abb Or (ZeitF = "")
If ZeitF = "" Then GoTo ni
If ZeitF = ZeitDef Then GoTo zi
Cells(i, 3).Value = ZeitF
End If
ni: Next i
Cancel = (MsgBox("Daten " & IIf(abb, "nicht ", "") & "komplett!" & IIf(abb, _
vbLf & "Trotzdem speichern?", ""), IIf(abb, vbYesNo + _
vbQuestion, vbOKOnly + vbInformation), "Dateistatus") > 6)
End Sub
Ich habe die Inputs insoweit verbessert, dass ich einen Defaultwert für das Format vorgesehen habe (bitte entsprechend anpassen!). Nach der 1.Eingabe wird deren Wert als Default bei der nächsten Eingabe verwendet (bei OK wird dieser Wert verwendet und nichts muss eingegeben wdn!). Das bleibt so während der ganzen Excel-Sitzung! Wenn die Eingabe abgebrochen wird, wird zwar ohne Dateneintrag fortgesetzt, aber nach Zyklusdurchlauf die Unvollständigkeit mitgeteilt und gefragt, ob trotzdem gedruckt wdn soll. Bei Nein wird der Druck abgebrochen.
Übrigens wird nach Uhrzeit nur gefragt, wenn ein Datum angegeben wurde!
Und wie gesagt, für den anderen Fall die andere Ereignisprozedur verwenden!
Gruß Luc :-?