Hallo miteinander
Ich muss im Unternehmen jeweils Tagesberichte erstellen, die danach in die FiBu importiert werden.
Um Fehlerquellen auszuräumen, habe ich mir ein Makro geschrieben, tut so weit seinen Job.
Nur hat es nach wie vor eine Fehlerquelle, die ich noch nicht beseitigen konnte. Und zwar muss man das Datum mitgeben. In meiner Referenzvorlage habe ich dazu "=heute()" stehen, da. Nun wollte ich gerne mit folgendem Codeschnipsel abfragen, ob dort das Datum angepasst wurde, und dass sonst das Makro abgebrochen wird.
Meine Erwartung wäre, dass damit nun der ganze Code beendet wird. Aber dem ist nicht so.
Kann mir echt jemand sagen, was ich falsch mache?
Ach und, warum gibt es in der Fuss- und/oder Kopfzeile ab und an den Pfad an?
Gruss und Danke
Edit: Funzt auch mit =today() anstelle von =heute() nicht.
Ich muss im Unternehmen jeweils Tagesberichte erstellen, die danach in die FiBu importiert werden.
Um Fehlerquellen auszuräumen, habe ich mir ein Makro geschrieben, tut so weit seinen Job.
Nur hat es nach wie vor eine Fehlerquelle, die ich noch nicht beseitigen konnte. Und zwar muss man das Datum mitgeben. In meiner Referenzvorlage habe ich dazu "=heute()" stehen, da. Nun wollte ich gerne mit folgendem Codeschnipsel abfragen, ob dort das Datum angepasst wurde, und dass sonst das Makro abgebrochen wird.
Code:
' Überprüft, ob das Datum angepasst wurde.
If Range("B2").Select = "=heute()" Then
MsgBox "Datum anpassen! Makro abgebrochen"
End
ElseIf Range("B2").Select = "=HEUTE()" Then
MsgBox "Datum anpassen! Makro abgebrochen"
End
Else
End If
Meine Erwartung wäre, dass damit nun der ganze Code beendet wird. Aber dem ist nicht so.
Kann mir echt jemand sagen, was ich falsch mache?
Code:
Sub SB_PaS_TB_M2()
'
' Sagibeiz Makro
'
' Tastenkombination: Strg+Umschalt+S
'
' Überprüft, ob das Datum angepasst wurde.
If Range("B2").Select = "=heute()" Then
MsgBox "Datum anpassen! Makro abgebrochen"
End
ElseIf Range("B2").Select = "=HEUTE()" Then
MsgBox "Datum anpassen! Makro abgebrochen"
End
Else
End If
' Verschiebt für Buchung relevanter Inhaltsbereich um eine Zelle nach unten.
Range("A1:H19").Select
Range("H19").Activate
Selection.Cut Destination:=Range("A2:H22")
' Wählt den Bereich A1:C1 aus, und verbindet ihn.
Range("A1:C1").Select
Range("C1").Activate
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
' Schreibt den Titel in die nun verbundene Titelzelle.
Range("A1").Select
Range("A1").Activate
ActiveCell.FormulaR1C1 = "TAGESBERICHT SAGIBEIZ"
' Wählt den Bereich F1:G1 aus, und verbindet ihn.
Range("F1:G1").Select
Range("G1").Activate
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
' Wählt den Bereich F1 aus, und schreibt "Erstellt am:" hinein.
Range("F1").Select
Range("F1").Activate
ActiveCell.FormulaR1C1 = "Erstellt am:"
' Wählt den Bereich H1 aus, und schreibt die Funktion für das aktuelle/heutige Datum hinein hinein.
Range("H1").Select
Range("H1").Activate
ActiveCell.FormulaR1C1 = "=TODAY()"
Selection.UnMerge
' Wählt den Bereich der ersten Zeile mit Inhalten aus, und macht dessen Schrift grösser und fett.
Range("A1:H1").Select
Range("H1").Activate
Selection.Font.Size = 14
Selection.Font.Bold = True
' Wählt den für Buchung relevanter Inhaltsbereich aus, und definiert die Querlinien.
Range("A2:H20").Select
Range("H20").Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
' Wählt den Bereich der ersten Zeile mit Inhalten aus, und macht eine fette Underline-Linie.
Range("A1:H1").Select
Range("H1").Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
' Wählt den Bereich der ersten Zeile mit Inhalten aus, und macht den Hintergrund schwarz und die Schrift weiss.
Range("A1:H1").Select
Range("H1").Activate
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
' Druckt den Bericht, mit angepasster Skalierung aus.
Range("A1:H20").Select
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
Application.PrintCommunication = True
ActiveSheet.PageSetup.PrintArea = ""
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(0.787401575)
.BottomMargin = Application.InchesToPoints(0.787401575)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = -2
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
' Löscht die erste Zeile.
Range("A1:H1").Select
Selection.ClearContents
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
' Setzt die Formatierung der ersten Zeile zurück.
Range("A1:H1").Select
Selection.UnMerge
' Markiert den für die Buchungen relevanten Bereich und verschiebt in zurück.
Range("A2:H20").Select
Range("H20").Activate
Range("A2:H20").Cut Destination:=Range("A1:H19")
Range("A1:H19").Select
' Entfernt sämtliche Trennlinien.
Range("A1:H22").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
' Speichert die Datei als Kopie als ".csv" im vorgesehen Verzeichnis ab, mit Datum aus Zelle.
ActiveSheet.Copy
ActiveWorkbook.SaveAs "C:\Users\dr\Documents\Gastrofix\Sagibeiz\offen\Makro Gastrofix Sagibeiz " & Range("B2").Value & ".csv", FileFormat:= _
xlCSVUTF8, CreateBackup:=False
ActiveWorkbook.Close
MsgBox "Dateiname: Makro Gastrofix Sagibeiz " & Range("B2").Value & vbLf & vbLf & strDateiname, vbOKOnly + vbInformation, "Datei wurde gespeichert:"
' Kopiert die Referenz ins Arbeitsblatt.
Sheets("Referenz").Select
Range("A1:H19").Select
Range("H19").Activate
Selection.Copy
Sheets("Arbeitsblatt").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Ach und, warum gibt es in der Fuss- und/oder Kopfzeile ab und an den Pfad an?
Gruss und Danke
Edit: Funzt auch mit =today() anstelle von =heute() nicht.
Zuletzt bearbeitet: