Microsoft Excel

Herbers Excel/VBA-Archiv

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

Rechnung | Herbers Excel-Forum


Betrifft: Rechnung von: SoulOpa
Geschrieben am: 01.01.2010 09:15:05

Hallo und einen schönen guten Morgen,

ich benötige mal wieder Eure Hilfe.

Ich habe mit meinen wenigen Excel kenntnissen eine Rechnung mit Stammdaten und ein Rechnungsverwaltung angelegt.

Nun möchte ich wenn ich in den Stammdaten was eintrage dieses in der Rechnung erscheint, dieses klappt auch so weit doch wenn ich zum Beispiel in den Stamm daten ein Feld leer lasse erscheint bei mir in der Rechnung immer der Wert 0

Die Daten hole ich mir mit folgendem Code =Stammdaten!C7 wie kann ich das verhindern?

im gleichen Blatt verwende ich diesen Code =WENN(C22=0;"";Formel) Funktioniert einwand frei.

Des weiteren habe ich noch eine Frage!

ich habe ein Datenblatt mit dem Namen Rechnungsverwaltung und würde nun gerne wenn z.B in irgend einer Celle Bezahlt erscheint die ganze Zeile dann automatisch in das Datenblatt Rechnung Bezahlt nach Datum Geld Eingang Sotiert übertragen wird. Ist dieses zu realisieren?

Ich sende mal die Musterdatei zum anschauen mit. https://www.herber.de/bbs/user/66914.zip

Wenn ja, würde ich mich über Eure Hilfe sehr freuen.

mfg Andi

  

Betrifft: AW: Rechnung von: Hajo_Zi
Geschrieben am: 01.01.2010 09:49:18

Hallo Andi,

zu Teil 1 benutze doch Deine Formel ersetze C22 duch Stammdaten!C7

GrußformelHomepage


  

Betrifft: AW: Rechnung von: SoulOpa
Geschrieben am: 01.01.2010 10:07:57

Hallo Hajo und einen gutes Neues,

Danke für Deine Hilfe im ersten Teil! klappt einwandfrei.


Grüße und ein schönes Wochenende zu Dir.

mfg


  

Betrifft: AW: Rechnung von: SoulOpa
Geschrieben am: 01.01.2010 16:28:38

Des weiteren habe ich noch eine Frage!

ich habe ein Datenblatt mit dem Namen Rechnungsverwaltung und in diesem Tabellenblat in Celle I2 erscheint Offen oder Bezahlt

nun würde ich gerne wenn in der Celle Bezahlt erscheint das dann die ganze Zeile A2 bis J2 automatisch in das Datenblatt Rechnung Bezahlt, und nach Datum Geld Eingang Sotiert übertragen wird. Ist dieses zu realisieren?

mfg Andi


  

Betrifft: AW: Rechnung von: Josef Ehrensberger
Geschrieben am: 01.01.2010 17:36:42

Hallo Andi,

kopiere den Code in das Modul der Tabelle "Rechnung Bezahlt".

Die Liste wird beim Aktivieren des Blattes aktualisiert.

' **********************************************************************
' Modul: Tabelle5 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Activate()
  Dim rng As Range, rngRgNum As Range, rngCopy As Range
  Dim lngNext As Long, vntRet As Variant
  
  On Error GoTo Errexit
  Application.EnableEvents = False
  Application.ScreenUpdating = False
  
  With Sheets("Rechnungsverwaltung")
    Set rngRgNum = Me.Range("C:C")
    lngNext = Application.Max(2, Me.Cells(Me.Rows.Count, 1).End(xlUp).Row + 1)
    
    For Each rng In .Range("I2:I" & CStr(.Cells(.Rows.Count, 9).End(xlUp).Row))
      If LCase(rng.Text) = "bezahlt" Then
        vntRet = Application.Match(rng.Offset(0, -6), rngRgNum, 0)
        If IsError(vntRet) Then
          If rngCopy Is Nothing Then
            Set rngCopy = rng.EntireRow
          Else
            Set rngCopy = Union(rngCopy, rng.EntireRow)
          End If
        End If
      End If
    Next
  End With
  
  If Not rngCopy Is Nothing Then
    rngCopy.Copy
    Me.Cells(lngNext, 1).PasteSpecial xlValues
    Me.Cells(lngNext, 1).PasteSpecial xlFormats
    Application.CutCopyMode = False
    Me.Range("A1").CurrentRegion.Sort Key1:=Me.Range("H1"), Order1:=xlDescending, _
      Key2:=Me.Range("D1"), Order2:=xlDescending, _
      Header:=xlGuess
    Me.Range("A2").Select
  End If
  
  
  Errexit:
  Application.EnableEvents = True
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
  Set rng = Nothing
  Set rngRgNum = Nothing
  Set rngCopy = Nothing
End Sub



Gruß Sepp



  

Betrifft: AW: Rechnung von: SoulOpa
Geschrieben am: 01.01.2010 18:46:18

Hallo Sepp auch Dir ersteinmal ein Danke schön für Deine Hilfe und ein gutes neues Jahr,


So ich habe Deinen Code in in das Modul der Tabelle "Rechnung Bezahlt". kopiert!

wenn ich jetzt die Tabelle Rechnung Bezahlt aufrufe wird A2 bis endlos Makiert, aber keine Daten vom Tabellenblatt Rechnungsverwaltung übertragen.

Woran kann das noch liegen?

mfg Andi


  

Betrifft: AW: Rechnung von: Josef Ehrensberger
Geschrieben am: 01.01.2010 19:06:33

Hallo Andi,

ich habe es in deiner Beispieldatei getestet und es funktioniert.

Wichtig sin drei Punkte, es muss im Blatt "Rechnungsverwaltung" in Spalte A eine Kundennummer stehen,
um die nächste freie Zeile zu ermitteln, es muss in Spalte C eine eindeutige Rechnungsnummer stehen,
um doppelte Übertraungen zu verhindern und in Spate I muss "Bezahlt" stehen.


Gruß Sepp



  

Betrifft: AW: Rechnung von: SoulOpa
Geschrieben am: 01.01.2010 19:17:19

Hallo Sepp,

Ok Funktioniert! habe die Mappe her genommen die ich hoch geladen habe. Die Testmappe hat wohl einen Fehler.


Vielen Dank für Deine schnelle Hilfe.

schönes Wochenende

mfg Andi


  

Betrifft: Frage an Hajo von: SoulOpa
Geschrieben am: 03.01.2010 10:14:33

Hallo Hajo,

ich hoffe das Du mir noch einmal Helfen könntest. Ich würde gerne die Rechnung in einem Verzeichniss C:\Rechnungs Backup Ordner! Kopieren aber ohne Makros und nur den Druckbereich. Die Rechnungskopie Datei wird immer mit folgenden Name die aus der Rechnung mit folgendem Code ausgelesen wird

DName = [A11] & "__" & [L1] & "__" & Format([E6], "hh-mm-ss") & ".xls"

Testfirma__Rechnungsnummer__03012010 - 3 erstellt.


Momentaner Code von mir

'Rechnung Speichern
ChDir "C:\Rechnungs Backup\"
ActiveSheet.Copy
'Sollte das Verzeichnis schon einmal angelegt worden sein -> Fehler ignorieren
DName = [A11] & "__" & [L1] & "__" & Format([E6], "hh-mm-ss") & ".xls"
On Error Resume Next
ActiveWorkbook.SaveAs DName
ActiveWorkbook.Close
MsgBox "Rechnung wurde erfolgreich Archiviert und Kopiert! Ihre Rechnungs Kopie wurden im Verzeichniss C:\Rechnungs Backup Ordner! Gespeichert"
___________________________________________________________________________________



Kann mann Deinen Code den ich hier im Forum gefunden habe an meinen Bedürfnisse anpassen? und würdest Du es Dir wenn Du Zeit hättest einmal anschauen? und mir dabei weiter helfen.



Option Explicit ' Variablendefinition erforderlich

Private Sub CommandButton1_Click()
'**************************************************
'* H. Ziplies                                     *
'* 04.07.2007                                     *
'* erstellt von Hajo.Ziplies@web.de               *
'* http://Hajo-Excel.de/

 *
'**************************************************
'   Kopie einer Tabelle ohne Formeln mit Format, Register nicht geschützt
    Workbooks.Add
    Application.ScreenUpdating = False              ' Bildschirmaktualisierung aus
    With ThisWorkbook                                                   ' Datei mit Code
        ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & ThisWorkbook.Name ' neue Datei Workbooks.  _
_
Add
        Worksheets.Add
        .Worksheets("Tabelle2").Cells.Copy
        With ActiveWorkbook.ActiveSheet.Cells
            .PasteSpecial Paste:=xlPasteValues  ' Werte
            .PasteSpecial Paste:=xlFormats      ' Formate
        End With
        ActiveWorkbook.ActiveSheet.Name = "Tabelle2 Duplikat"
        Application.CutCopyMode = False                         ' Zwischenspeicher löschen
        MsgBox "Reine Datentabelle gespeichert als: " & .Path & "\Kopie_von_" & ThisWorkbook. _
Name
        ActiveWorkbook.Close True                               ' Dateikopie schließen mit  _
speichern
    End With
    Application.ScreenUpdating = True                           ' Bildschirmaktualisierung ein

End Sub


Währe sehr nett, Danke und ein schönen Sonntag.

mfg Andi


  

Betrifft: Frage an Hajo von: SoulOpa
Geschrieben am: 03.01.2010 10:16:22

Hallo Hajo,

ich hoffe das Du mir noch einmal Helfen könntest. Ich würde gerne die Rechnung in einem Verzeichniss C:\Rechnungs Backup Ordner! Kopieren aber ohne Makros und nur den Druckbereich. Die Rechnungskopie Datei wird immer mit folgenden Name die aus der Rechnung mit folgendem Code ausgelesen wird

DName = [A11] & "__" & [L1] & "__" & Format([E6], "hh-mm-ss") & ".xls"

Testfirma__Rechnungsnummer__03012010 - 3 erstellt.


Momentaner Code von mir

'Rechnung Speichern
ChDir "C:\Rechnungs Backup\"
ActiveSheet.Copy
'Sollte das Verzeichnis schon einmal angelegt worden sein -> Fehler ignorieren
DName = [A11] & "__" & [L1] & "__" & Format([E6], "hh-mm-ss") & ".xls"
On Error Resume Next
ActiveWorkbook.SaveAs DName
ActiveWorkbook.Close
MsgBox "Rechnung wurde erfolgreich Archiviert und Kopiert! Ihre Rechnungs Kopie wurden im Verzeichniss C:\Rechnungs Backup Ordner! Gespeichert"
___________________________________________________________________________________



Kann mann Deinen Code den ich hier im Forum gefunden habe an meinen Bedürfnisse anpassen? und würdest Du es Dir wenn Du Zeit hättest einmal anschauen? und mir dabei weiter helfen.



Option Explicit ' Variablendefinition erforderlich

Private Sub CommandButton1_Click()
'**************************************************
'* H. Ziplies                                     *
'* 04.07.2007                                     *
'* erstellt von Hajo.Ziplies@web.de               *
'* http://Hajo-Excel.de/


 *
'**************************************************
'   Kopie einer Tabelle ohne Formeln mit Format, Register nicht geschützt
    Workbooks.Add
    Application.ScreenUpdating = False              ' Bildschirmaktualisierung aus
    With ThisWorkbook                                                   ' Datei mit Code
        ActiveWorkbook.SaveAs .Path & "\Kopie_von_" & ThisWorkbook.Name ' neue Datei Workbooks.  _
 _
_
Add
        Worksheets.Add
        .Worksheets("Tabelle2").Cells.Copy
        With ActiveWorkbook.ActiveSheet.Cells
            .PasteSpecial Paste:=xlPasteValues  ' Werte
            .PasteSpecial Paste:=xlFormats      ' Formate
        End With
        ActiveWorkbook.ActiveSheet.Name = "Tabelle2 Duplikat"
        Application.CutCopyMode = False                         ' Zwischenspeicher löschen
        MsgBox "Reine Datentabelle gespeichert als: " & .Path & "\Kopie_von_" & ThisWorkbook. _
Name
        ActiveWorkbook.Close True                               ' Dateikopie schließen mit  _
speichern
    End With
    Application.ScreenUpdating = True                           ' Bildschirmaktualisierung ein

End Sub


Währe sehr nett, Danke und ein schönen Sonntag.

mfg Andi


  

Betrifft: AW: Frage an Hajo von: fcs
Geschrieben am: 03.01.2010 13:56:59

Hallo Andi,

bei speichern eines Teilbereichs einer Tabelle wird es etwas komplizierter, da die Spaltenformate dann zusätzlich in die Kopie übertragen werden.

Ggf. müssen auch verschiedene Blatt einstellungen in die Kopie übertragen werden.

Hier mein Vorschlag, den ich für solche Zwecke in ähnlicher Form verwende. Nicht gewünschte Teile muss du halt löschen.

Langfristig solltest du dir überlegen die Sicherungskopie der Rechnung als PDF-Datei anzulegen. Dann hast du den Ausdruck als Datei vorliegen, was für Dokumentationszwecke wohl günstiger ist.

Gruß
Franz

Sub RechnungKopieSichern()
  Dim wksRechnung As Worksheet
  Dim wbKopie As Workbook, wksKopie As Worksheet
  Dim DName As String
  Const PfadBackUp = "C:\Rechnungs Backup\"
  On Error GoTo Fehler
  Set wksRechnung = ActiveSheet
  DName = [A11] & "__" & [L1] & "__" & Format([E6], "hh-mm-ss") & ".xls"
  'Neue Datei mit einem Tabellenblatt für Kopie anlegen
  Application.ScreenUpdating = False
  Set wbKopie = Workbooks.Add(Template:=xlWBATWorksheet)
  Set wksKopie = wbKopie.Worksheets(1)
  With wksRechnung
    'Blattnamen übernehmen
    wksKopie.Name = .Name
    With .Range(.PageSetup.PrintArea)
      'Spaltenformate des Druckbereichs der Rechnung kopieren
      .EntireColumn.Copy
      wksKopie.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
      'Druckbereichswerte und -formate kopieren
      .Copy
      wksKopie.Cells(.Row, 1).PasteSpecial Paste:=xlPasteFormats
      wksKopie.Cells(.Row, 1).PasteSpecial Paste:=xlPasteValues
      Application.CutCopyMode = False
      'Überzählige Zeilen unterhalb Druckbereich in Kopie löschen
      If wksRechnung.Cells.SpecialCells(xlCellTypeLastCell).Row > .Row + .Rows.Count - 1 Then
        wksKopie.Range(wksKopie.Rows(.Row + .Rows.Count), _
          wksKopie.Rows(wksRechnung.Cells.SpecialCells(xlCellTypeLastCell).Row)).Delete
      End If
      'Überzählige Zeilen oberhalb Druckbereich in Kopie löschen
      If .Row > 1 Then
        wksKopie.Range(wksKopie.Rows(1), wksKopie.Rows(.Row - 1)).Delete
      End If
    End With
  End With
  With wksKopie
    Range("A1").Select
    'Blatteinstellungen übertragen
    With .PageSetup
      .Orientation = wksRechnung.PageSetup.Orientation
      .PaperSize = wksRechnung.PageSetup.PaperSize
      .LeftMargin = wksRechnung.PageSetup.LeftMargin
      .RightMargin = wksRechnung.PageSetup.RightMargin
      .TopMargin = wksRechnung.PageSetup.TopMargin
      .BottomMargin = wksRechnung.PageSetup.BottomMargin
      .FooterMargin = wksRechnung.PageSetup.FooterMargin
      .HeaderMargin = wksRechnung.PageSetup.HeaderMargin
      .LeftFooter = wksRechnung.PageSetup.LeftFooter
      .CenterFooter = wksRechnung.PageSetup.CenterFooter
      .RightFooter = wksRechnung.PageSetup.RightFooter
      .LeftHeader = wksRechnung.PageSetup.LeftHeader
      .CenterHeader = wksRechnung.PageSetup.CenterHeader
      .RightHeader = wksRechnung.PageSetup.RightHeader
      .PrintGridlines = wksRechnung.PageSetup.PrintGridlines
    End With
    'Blattschutz einrichten
    .Cells.Locked = True
    .Protect
  End With
  With wbKopie
    'Dokumenteigenschaften für Kopie festlegen
    .BuiltinDocumentProperties("Title") = wksRechnung.Range("A11") _
          & " - " & wksRechnung.Range("L1")
    .BuiltinDocumentProperties("Subject") = "Rechnung Archiv-Kopie"
    .BuiltinDocumentProperties("Author") = _
          ThisWorkbook.BuiltinDocumentProperties("Author")
    'Kopie Speichern , nur schreibgeschützt öffnen
    .SaveAs Filename:=PfadBackUp & DName, addtomru:=True, ReadOnlyRecommended:=True
    .Close
  End With
Fehler:
  Application.ScreenUpdating = True
  With Err
    Select Case .Number
      Case 0 ' Kein fehler
        MsgBox "Rechnung wurde erfolgreich Archiviert und Kopiert! " _
          & "Die Rechnungs Kopie wurde im Verzeichniss """ _
          & PfadBackUp & """ gespeichert"
      Case Else
        MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
    End Select
  End With
End Sub



  

Betrifft: AW: Frage an Hajo von: SoulOpa
Geschrieben am: 03.01.2010 14:35:42

Hallo Franz,

danke für deine Hilfe und Zeit. leider bekomme ich eine Fehler Meldung.

Fehler-1004

Die Informtionen können nicht eingefügt werden, da der Bereich Kopieren und der Bereich zum Einfügen unterschiedliche Formen und Größen haben.

Versuchen Sie folgendes.
Makieren Sie eine einzelne Zelle und wählen Sie dann Einfügen!
Makieren Sie eine Bereich, der die selbe Größe und Form hat und wählen Sie dann einfügen.



Aber dein Vorschlag Die Rechnung als PDF Datei anzulegen und zu speichern ist Genial, da wir dann erstens die Rechnungen nicht mehr abändern können und zweitens die Datei auch als Email versenden können. Währe das sehr viel aufwand? dieses zu bewerkstelligen.

Auf was muss man achten um dieses zu realisieren?

Danke

mfg Andi


  

Betrifft: AW: Frage an Hajo von: fcs
Geschrieben am: 03.01.2010 16:57:30

Hallo Andi,

die Fehlermeldung ist wahrscheinlich darauf zurückzuführen, dass verbundene Zellen im Blatt verwendet werden. Das macht öfters mal kummer.


Ausgabe als PDF-File.
Ich verwende z.B. privat FreePDF, da kann man auch ein Profil so einrichten, dass die erzeugten PDF-Dateien in einem bestimmten Verzeichnis abgelegt werden. Für dieses Profil muss dann ein eigener Drucker angelegt werden.

Dann sieht ein entsprechenden Makro wie folgt aus, wobei das Rechnungsblatt temporär in einer Datei mit dem gewünschten Namen gespeichert wird. Dieser Name wird dann unter FreePDF auch auch für die PDF-Datei verwendet.

Ein entsprechendes Makro sieht dann z.B wie folgt aus.
Ansonsten hier im Archiv stöbern. Da gibt es auch noch andere Varianten.

Gruß
Franz

Sub RechnungalsPDF()
  Dim wksRechnung As Worksheet
  Dim wbKopie As Workbook, wksKopie As Worksheet, strNameKopie As String
  Dim strDruckerAktiv As String
  Const DruckerPDF As String = "FreePDF - PDF-Verzeichnis" 'Name PDF-Drucker
  Dim DName As String
  Const PfadBackUp = "C:\Rechnungs Backup\"
'  Const PfadBackUp = "C:\Users\Public\Test\Data\" 'Verzeichnis für Temporäre Kopie
  On Error GoTo Fehler
  Set wksRechnung = ActiveSheet
  DName = [A11] & "__" & [L1] & "__" & Format([E6], "hh-mm-ss") & ".xls"
  Application.ScreenUpdating = False
  'Rechnungsblatt in neue Datei kopieren
  wksRechnung.Copy
  Set wbKopie = ActiveWorkbook
  Set wksKopie = wbKopie.Worksheets(1)
  With wbKopie
    'Kopie temporär Speichern
    .SaveAs Filename:=PfadBackUp & DName
    strNameKopie = wbKopie.FullName 'Dateinamen merken
    strDruckerAktiv = Application.ActivePrinter 'Aktiven Drucker merken
    'PDF-Datei erstellen
    wksKopie.PrintOut ActivePrinter:=DruckerPDF
    'Drucker zurücksetzen
    Application.ActivePrinter = strDruckerAktiv
    'Temporäre Datei schließen und löschen
    wbKopie.Close savechanges:=False
    VBA.Kill strNameKopie
  End With
Fehler:
  Application.ScreenUpdating = True
  With Err
    Select Case .Number
      Case 0 ' Kein fehler
        MsgBox "Rechnung wurde erfolgreich als PDF archiviert! " _
          & "Die Rechnungs Kopie wurde im Verzeichniss """ _
          & PfadBackUp & """ gespeichert"
      Case Else
        MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
    End Select
  End With
End Sub



  

Betrifft: AW: Frage an Franz von: SoulOpa
Geschrieben am: 03.01.2010 20:55:59

Hallo Franz,

so habe jetzt das Programm FreePDF_XP Installiert und Dein Code Funktioniert schon einmal recht gut *FREU* nun habe ich noch eine Frage! in deinem Code steht

Const DruckerPDF As String = "FreePDF - PDF-Verzeichnis" 'Name PDF-Drucker

muss ich hier noch was eintragen? wie das Verzeichnis? dann Frage zwei und zwar wenn ich auf den CommandButton Rechnung Drucken und Archivieren drücke öffnet er immer das Programm FreePDF 4.02 mit dem Namen Muster_Rechnungsvorlage-1 wenn ich dann auf abbrechen gehe öffnet er dies wieder mit dem gleichen Muster_Rechnungsvorlage-1 gehe ich wieder auf abbrechen dann öffnet er mir erst die zu speichernde Mappe mit dem richtigen Namen Testfirma__Rechnungsnummer__03012010 - 4 muss da noch was im PDF Programm eingestellt werden? oder muss noch was am Code abgeändert werden?

So weit speichert er es auch im richtigen Verzeichnis aber erst beim dritten mal.

Danke für deine Bemühungen

mfg Andi


  

Betrifft: AW: Frage an Franz von: fcs
Geschrieben am: 04.01.2010 03:20:57

Hallo Andi,

du muss im PDF Configurationsprogramm dir ein spezielles Profil einrichten.

Starte das PDF Configurations-Programm und melde dich als Administrator an.
Wähle Profile.
Hier Profil "High Quality" wählen, dann Neues Profil erstellen.

im Register Grundlegende Optionen
- Alle User wählen
- Name z.B. Rechnung

in weiteren Registern ggf. Optionen anpassen

im Register FreePDF Dialog
- unter Aktion beim Drucken wählen: In Ordner speichern
- unter Pfad/Datei das Zielverzeichnis für die Rechnungen wählen

- ggf. die Option PDF-Anzeigen aktivieren/deaktivieren

Profil speichern
und im Profil-Menü das eben erstellte Profil auswählen und "Für das aktive Proifil einen eigenen Drucker anlegen"
Unter den Druckern wird dann ein weiterer Drucker wählbar z.B. "FreePDF - Rechnung"

Diesen Namen muss du dann für die Konstante DruckerPDF als Wert im Code eintragen.


Nach diesen Anpassungen sollte die Druckroutine eigentlich durchlaufen und das PDF mit dem korrekten Namen gespeichert werden. ggf. flackern ein paar Fenster des PDF-Programms zwischendurch.

Gruß
Franz


  

Betrifft: AW: Frage an Franz von: SoulOpa
Geschrieben am: 04.01.2010 12:25:24

Hallo Franz,

hiermit wollte ich mich noch einmal recht herzlich für deine hilfe und die Zeit die Du für mich geopfert hast bei Dir bedanken :-) klappt alles auf anhieb und ohne Probleme. Vielen Vielen Dank.

Auch den anderen Helfern ein recht herzliches Danke schööööön.


mfg Andi


  

Betrifft: zu von: zu
Geschrieben am: 04.01.2010 15:44:55

zu


Beiträge aus den Excel-Beispielen zum Thema "Rechnung"