ich wollte für eine Art Tageszettel automatisch beim Druck das Datum
ändern. Der Zettel soll eine leere Tabelle für Einträge mit Hand
enthalten. Das Tagesdatum im Kopf soll fertig aufgedruckt werden.
Als Sahnebonbon sollen nur Werktage gedruckt werden (Mo-Sa).
Utopie oder machbar?
Gruß
Horst
Hallo Horst
dafür brauchst du kein makro sondern nur eine excel funktion.
Da du das das datum "automatisch" ändern willst, muß es ja von irgendetwas
abhängig sein - vermutlich vom aktuellen Tagesdatum.
also die einfachste version - in eine Zelle folg. Funktion eintragen:
=heute()
und mit Datumsformat formatieren.
falls du das Vortagesdatum braust:
=heute()-1.
Für nur Werktage solltest du dir mal die funktion "Wochentag" anschauen und
in einer "Wenn" funktion und der "Heute" Funktion kombinieren.
Gruß
Thomas
> Hallo Horst
> dafür brauchst du kein makro sondern nur eine excel funktion.
> Da du das das datum "automatisch" ändern willst, muß es ja von
irgendetwas
> abhängig sein - vermutlich vom aktuellen Tagesdatum.
Erstmal Danke,
aber die Zettel sollen Tagesberichte auf Baustellen werden, die ich `im
Block`, also Monatsweise an die Gesellen abgebe. Die füllen dann auf der
Baustelle die Zettel aus. Ich will also keine 30 Arbeitsblätter in einer
Excelmappe, sondern eine Tabelle/Formular, wo beim Drucken für 1 Monat
das Tagesdatum geändert wird.
Es müßte also ein: (Drucken - Datum ändern - Drucken) Makro sein. Da ich
von Makros keine Ahnung habe, frage ich, ob sowas möglich ist?
Gruß
Horst
' MonatDruck Makro
' Einen Ausdruck für jeden Werktag des eingegebenen Montats
' Das Jahr muß als Zahl in A1 eingetragen sein
' Die Ausgabe des Tagesdatums erfolgt in A2
'
' Thomas Anon
' 1.8.2001
Option Explicit
Sub MonatDruck()
Dim stgMonat As String
Dim bytMonat As Byte
Dim intJahr As Integer
Dim dteDat As Date
stgMonat = InputBox("Bitte Monat als Zahl eingeben", , "00")
If Not IsNumeric(stgMonat) _
Then
GoTo Fehleingabe
End If
'
bytMonat = CByte(stgMonat)
If bytMonat < 1 Or bytMonat > 12 _
Then
GoTo Fehleingabe
End If
intJahr = ActiveSheet.Range("A1")
If Not IsNumeric(intJahr) Or intJahr < 1950 Or intJahr > 2099 _
Then
MsgBox "falsches Jahr in Zelle A1"
Exit Sub
End If
Range("A2").Select
Selection.NumberFormat = "DD.MMM.YYYY"
Application.ScreenUpdating = False
dteDat = DateSerial(intJahr, bytMonat, 1)
Do Until Month(dteDat) <> bytMonat
If Weekday(dteDat, vbMonday) < 6 _
Then
ActiveCell.FormulaR1C1 = dteDat
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
End If
dteDat = dteDat + 1
Loop
GoTo Ende
Fehleingabe:
MsgBox "Falsche Eingabe; Bitte Zahl zwischen 1 und 12 eingeben"
Ende:
Application.ScreenUpdating = True
End Sub
Gruß
Thomas