Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1124to1128
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rechnung | Herbers Excel-Forum

Rechnung
01.01.2010 09:15:05
SoulOpa

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

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rechnung
01.01.2010 09:49:18
Hajo_Zi
Hallo Andi,
zu Teil 1 benutze doch Deine Formel ersetze C22 duch Stammdaten!C7

AW: Rechnung
01.01.2010 10:07:57
SoulOpa
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
AW: Rechnung
01.01.2010 16:28:38
SoulOpa
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
Anzeige
AW: Rechnung
01.01.2010 17:36:42
Josef Ehrensberger
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
Anzeige
AW: Rechnung
01.01.2010 18:46:18
SoulOpa
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
AW: Rechnung
01.01.2010 19:06:33
Josef Ehrensberger
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
Anzeige
AW: Rechnung
01.01.2010 19:17:19
SoulOpa
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
Frage an Hajo
03.01.2010 10:14:33
SoulOpa
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
Anzeige
Frage an Hajo
03.01.2010 10:16:22
SoulOpa
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
Anzeige
AW: Frage an Hajo
03.01.2010 13:56:59
fcs
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

Anzeige
AW: Frage an Hajo
03.01.2010 14:35:42
SoulOpa
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
Anzeige
AW: Frage an Hajo
03.01.2010 16:57:30
fcs
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

Anzeige
AW: Frage an Franz
03.01.2010 20:55:59
SoulOpa
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
Anzeige
AW: Frage an Franz
04.01.2010 03:20:57
fcs
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
AW: Frage an Franz
04.01.2010 12:25:24
SoulOpa
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
zu
04.01.2010 15:44:55
zu
zu

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige