Supportnet / Forum / Tabellenkalkulation
Excel
Frage
Hallo
Hätte da ein Problem.Ich habe mir bei Excel in der Mustervorlage eine Rechnung erstellt, und hinbekommen,das wenn ich eine Nummer eingebe es mir den Name und Adresse einfügt.Nun mein Frage. Wie kann ich das machen das wenn ich speichere es mir den Betrag in Kundendatei einträgt und beim nächsten mal speichern den Betrag in die Zeile darunter!!!!!!!.Wäre für einen Tip sehr Dankbar
Im vorhinen sage ich schon mal Danke
Helmut
Antwort 1 von coros
Moin Helmut,
nachfolgenden Code kopiere in das VBA Projekt "DieseArbeitsmappe".
Bei diesem Code wird immer bevor gespeichert wird, der Inhalt aus Zelle A1 des aktiven Blatt´s in die erste leere Zeile in Blatt "Kundendatei" in Spalte kopiert.
Da ich mal davon ausgehe, das Dein Betrag in einer anderen zelle als A1 steht, dann musst Du in dem Code in der Zeile
Cells(1, 1).Copy
eine andere Zelleadresse angeben. Die erste Zahl in der Klammer sagt die Zeile aus.Die zweite ist die Spaltenindexzahl und steht für die Spalte. In diesem Fall steht die 1 für Spalte A. Wenn der Wert z.B. in Spalte B steht, dann muss anstelle der 1 eine 2 stehen, wenn es um Spalte C geht, eine 3 usw. Ebenso nehme ich mal an, dass der kopierte Wert nicht unbeding in Spalte A eingefügt werden soll. Daher musst Du in dem Code in der Zeile
Sheets("Kundendatei").Cells(Zeile, 1).PasteSpecial Paste:=xlPasteValues, _
die Spaltenindexzahl ebenfalls abändern. Wenn das Tabellenblatt, wohin der Wert kopiert werden sollen, nicht "Kundendatei" heißt, dann musst Du den bitte in der obigen Zeile ebenfalls ändern.
Wenn Du nicht weißt, wie Du den Code in Deine Datei bekommst, dann schau doch mal auf meiner HP in der Rubrik Anleitungen und dort dann Anleitung zum VBA Projekt “Diese Arbeitsmappe" vorbei. Dort habe ich eine bebilderte Anleitung, die Dir sicherlich behilflich sein wird.
Wenn Du noch Fragen zu dem VBA Code hast, oder Probleme damit auftauchen, dann melde Dich hier wieder.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nachfolgenden Code kopiere in das VBA Projekt "DieseArbeitsmappe".
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Zeile As Long
Application.ScreenUpdating = False
Zeile = Sheets("Kundendatei"). _
Range("A65536").End(xlUp).Offset(1, 0).Row
Cells(1, 1).Copy
Sheets("Kundendatei").Cells(Zeile, 1).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End SubBei diesem Code wird immer bevor gespeichert wird, der Inhalt aus Zelle A1 des aktiven Blatt´s in die erste leere Zeile in Blatt "Kundendatei" in Spalte kopiert.
Da ich mal davon ausgehe, das Dein Betrag in einer anderen zelle als A1 steht, dann musst Du in dem Code in der Zeile
Cells(1, 1).Copy
eine andere Zelleadresse angeben. Die erste Zahl in der Klammer sagt die Zeile aus.Die zweite ist die Spaltenindexzahl und steht für die Spalte. In diesem Fall steht die 1 für Spalte A. Wenn der Wert z.B. in Spalte B steht, dann muss anstelle der 1 eine 2 stehen, wenn es um Spalte C geht, eine 3 usw. Ebenso nehme ich mal an, dass der kopierte Wert nicht unbeding in Spalte A eingefügt werden soll. Daher musst Du in dem Code in der Zeile
Sheets("Kundendatei").Cells(Zeile, 1).PasteSpecial Paste:=xlPasteValues, _
die Spaltenindexzahl ebenfalls abändern. Wenn das Tabellenblatt, wohin der Wert kopiert werden sollen, nicht "Kundendatei" heißt, dann musst Du den bitte in der obigen Zeile ebenfalls ändern.
Wenn Du nicht weißt, wie Du den Code in Deine Datei bekommst, dann schau doch mal auf meiner HP in der Rubrik Anleitungen und dort dann Anleitung zum VBA Projekt “Diese Arbeitsmappe" vorbei. Dort habe ich eine bebilderte Anleitung, die Dir sicherlich behilflich sein wird.
Wenn Du noch Fragen zu dem VBA Code hast, oder Probleme damit auftauchen, dann melde Dich hier wieder.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Helmut46
Moin coros
Erst mal Danke für die schnelle Hilfe.
Habe es genauso gemacht wie du es mir geschrieben hast, es schreibt mir den Betrag in die Zeile wo ich sie hinhaben wollte,einfach super ! Nun aber noch ein Problem. Habe mir den Code in die Mustervorlage gespeichert. Wenn ich nun einen Betrag speichere, wird es mir unter einen Namen gespeichert, super!
Wenn ich die Mustervorlage wieder öffne schreibt es mir den Betrag aber wieder in die gleiche Zeile in der
Rechnungsdaten. Was ich meine..es überschreibt den alten Betrag wieder. Ich möchte aber das die Beträge untereinander stehen.
Vieleicht kannst du mir nochmal weiterhelfen.
Helmut
habe den Code wie folgt geändert
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Zeile As Long
Application.ScreenUpdating = False
Zeile = Sheets("Rechnungsdaten"). _
Range("A65536").End(xlUp).Offset(1, 0).Row
Cells(44, 8).Copy
Sheets("Rechnungsdaten").Cells(15, 5).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Erst mal Danke für die schnelle Hilfe.
Habe es genauso gemacht wie du es mir geschrieben hast, es schreibt mir den Betrag in die Zeile wo ich sie hinhaben wollte,einfach super ! Nun aber noch ein Problem. Habe mir den Code in die Mustervorlage gespeichert. Wenn ich nun einen Betrag speichere, wird es mir unter einen Namen gespeichert, super!
Wenn ich die Mustervorlage wieder öffne schreibt es mir den Betrag aber wieder in die gleiche Zeile in der
Rechnungsdaten. Was ich meine..es überschreibt den alten Betrag wieder. Ich möchte aber das die Beträge untereinander stehen.
Vieleicht kannst du mir nochmal weiterhelfen.
Helmut
habe den Code wie folgt geändert
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Zeile As Long
Application.ScreenUpdating = False
Zeile = Sheets("Rechnungsdaten"). _
Range("A65536").End(xlUp).Offset(1, 0).Row
Cells(44, 8).Copy
Sheets("Rechnungsdaten").Cells(15, 5).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Antwort 3 von coros
Moin Helmut,
sorry, ich hatte vergessen zu schreiben, dass wenn der Wert in eine andere Spalte als die Spalte A kopiert wird, auch die Zeile
Range("A65536").End(xlUp).Offset(1, 0).Row
geändert werden muss. Diese Zeile ermittelt in der Spalte A die nächste freie Zeile. Da Du den Wert in die Zeile E schreibst, muss in dem VBA Code die Zeile in
Range("E65536").End(xlUp).Offset(1, 0).Row
geändert werden.
Ich hoffe, Du kommst klar. Ansonsten wieder melden. Ich gehe jetzt erst mal frühstücken.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
sorry, ich hatte vergessen zu schreiben, dass wenn der Wert in eine andere Spalte als die Spalte A kopiert wird, auch die Zeile
Range("A65536").End(xlUp).Offset(1, 0).Row
geändert werden muss. Diese Zeile ermittelt in der Spalte A die nächste freie Zeile. Da Du den Wert in die Zeile E schreibst, muss in dem VBA Code die Zeile in
Range("E65536").End(xlUp).Offset(1, 0).Row
geändert werden.
Ich hoffe, Du kommst klar. Ansonsten wieder melden. Ich gehe jetzt erst mal frühstücken.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Helmut46
Hallo coros
Tut mir leid das ich schon wieder da bin .
Aber es haut nicht ganz so hin,ich öffne die Datei setze Betrag ein speichere sie mit einem Namen,steht alles schön drin E 15.Öffne wieder Rechnung.. anderer Betrag.. speichern ..anderer Name,bei jeder Datei steht der eingegebene Betrag, aber alle auf E15 und nichts
untereinander.
Rechnung und Rechnungsdaten habe ich in der gleichen Arbeitsmappe. Meinst du es hat damit zutun das es nicht geht?
Danke Helmut
Habe den Code nach deinen Anweisungen geändert
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Zeile As Long
Application.ScreenUpdating = False
Zeile = Sheets("Rechnungsdaten"). _
Range("E65536").End(xlUp).Offset(1, 0).Row
Cells(44, 8).Copy
Sheets("Rechnungsdaten").Cells(15, 5).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Gruß Helmut
Tut mir leid das ich schon wieder da bin .
Aber es haut nicht ganz so hin,ich öffne die Datei setze Betrag ein speichere sie mit einem Namen,steht alles schön drin E 15.Öffne wieder Rechnung.. anderer Betrag.. speichern ..anderer Name,bei jeder Datei steht der eingegebene Betrag, aber alle auf E15 und nichts
untereinander.
Rechnung und Rechnungsdaten habe ich in der gleichen Arbeitsmappe. Meinst du es hat damit zutun das es nicht geht?
Danke Helmut
Habe den Code nach deinen Anweisungen geändert
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Zeile As Long
Application.ScreenUpdating = False
Zeile = Sheets("Rechnungsdaten"). _
Range("E65536").End(xlUp).Offset(1, 0).Row
Cells(44, 8).Copy
Sheets("Rechnungsdaten").Cells(15, 5).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Gruß Helmut
Antwort 5 von coros
Hi Helmut,
Dein Fehler liegt in der Zeile
Sheets("Rechnungsdaten").Cells(15, 5).PasteSpecial Paste:=xlPasteValues, _
Bei meinem Ausgangscode stand dort
Sheets("Kundendatei").Cells(Zeile, 1).PasteSpecial Paste:=xlPasteValues, _
Du hast den Code wie oben abgeändert. Falsch daran ist, dass Du das Wort Zeile gelöscht hast und durch den Zeilenindex 15 ersetzt hast. Damit sagst Du dem Code, dass die kopierte Zahl immer in E15 eingefügt werden soll. Das Wort Zeile muss aber bleiben, da das eine Variable ist, die immer die Zeilenindexzahl der nächsten freien Zeile angibt. Lösche also in dem Code die gesamte Zeile und füge statt dessen die Zeile
Sheets("Rechnungsdaten").Cells(Zeile, 5).PasteSpecial Paste:=xlPasteValues, _
ein, dann sollte es funktionieren. Wenn nicht, dann wieder melden.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Dein Fehler liegt in der Zeile
Sheets("Rechnungsdaten").Cells(15, 5).PasteSpecial Paste:=xlPasteValues, _
Bei meinem Ausgangscode stand dort
Sheets("Kundendatei").Cells(Zeile, 1).PasteSpecial Paste:=xlPasteValues, _
Du hast den Code wie oben abgeändert. Falsch daran ist, dass Du das Wort Zeile gelöscht hast und durch den Zeilenindex 15 ersetzt hast. Damit sagst Du dem Code, dass die kopierte Zahl immer in E15 eingefügt werden soll. Das Wort Zeile muss aber bleiben, da das eine Variable ist, die immer die Zeilenindexzahl der nächsten freien Zeile angibt. Lösche also in dem Code die gesamte Zeile und füge statt dessen die Zeile
Sheets("Rechnungsdaten").Cells(Zeile, 5).PasteSpecial Paste:=xlPasteValues, _
ein, dann sollte es funktionieren. Wenn nicht, dann wieder melden.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von helmut46
Hallo coros
Es klappt ist ja super !!!!!!!!!
Vielen dank für deine hilfe
Bin Maler wenn du mal deine Bude streichen wilst,
kannst dir auch ein paar Tips bei mir holen !!!!!
Gruß Helmut
Es klappt ist ja super !!!!!!!!!
Vielen dank für deine hilfe
Bin Maler wenn du mal deine Bude streichen wilst,
kannst dir auch ein paar Tips bei mir holen !!!!!
Gruß Helmut
Antwort 7 von helmut46
Hallo coros
Ich hoffe du schaust nochmal rein hier.
Hätte nochmals eine Frage,ich habe vergessen zu erwähnen das ich die Zellen wo der Betrag steht
auch hin und wieder verschieben muß. Normal steht sie auf H44 .Es kommt auch vor das die Rechnung über zwei Seiten geht,muß also den Bereich dann auf die zweite Seite manuell verschieben,macht mir da deine Formel mit oder muß mann da noch was ändern.
Würde mich über Antwort freuen
gruß Helmut
Ich hoffe du schaust nochmal rein hier.
Hätte nochmals eine Frage,ich habe vergessen zu erwähnen das ich die Zellen wo der Betrag steht
auch hin und wieder verschieben muß. Normal steht sie auf H44 .Es kommt auch vor das die Rechnung über zwei Seiten geht,muß also den Bereich dann auf die zweite Seite manuell verschieben,macht mir da deine Formel mit oder muß mann da noch was ändern.
Würde mich über Antwort freuen
gruß Helmut
Antwort 8 von schnallgonz
Salve Helmut,
nur für den Fall, dass Coros hier nicht mehr vorbeikommen sollte (was aber unwahrscheinlich ist):
ich arbeite gerne mit Namen in Excel, d.h. ich weise einer Zelle eine feste Bezeichnung zu über "Einfügen / Namen / Festlegen".
Wenn du das mit Deiner "Betragszelle" in H44 machst, also z.B. den Namen "ZelleWoBetrag" vergibst, kannst Du diese Zelle immer mit folgendem Befehl anspringen:
Application.Goto Reference:="ZelleWoBetrag"
Selection.Copy
Ob dann nach Zelleneinfügen oder Zellenverschieben ein anderer Zellenindex entsteht, ist egal.
Den obigen Code stellst Du anstatt
Cells(44, 8).Copy
in Dein Listing, fertig.
Kann wahrscheinlich nicht nur Coros eleganter lösen, sollte aber funzen.
MfG
schnallgonz
nur für den Fall, dass Coros hier nicht mehr vorbeikommen sollte (was aber unwahrscheinlich ist):
ich arbeite gerne mit Namen in Excel, d.h. ich weise einer Zelle eine feste Bezeichnung zu über "Einfügen / Namen / Festlegen".
Wenn du das mit Deiner "Betragszelle" in H44 machst, also z.B. den Namen "ZelleWoBetrag" vergibst, kannst Du diese Zelle immer mit folgendem Befehl anspringen:
Application.Goto Reference:="ZelleWoBetrag"
Selection.Copy
Ob dann nach Zelleneinfügen oder Zellenverschieben ein anderer Zellenindex entsteht, ist egal.
Den obigen Code stellst Du anstatt
Cells(44, 8).Copy
in Dein Listing, fertig.
Kann wahrscheinlich nicht nur Coros eleganter lösen, sollte aber funzen.
MfG
schnallgonz
Antwort 9 von Helmut46
Danke
hat Super funktioniert !!!!
So Exeldoofis wie ich können nur froh sein das es so nette User gibt die einem weiterhelfen :-)
Danke nochmal bis zur nächsten Frage..gg
Helmut
hat Super funktioniert !!!!
So Exeldoofis wie ich können nur froh sein das es so nette User gibt die einem weiterhelfen :-)
Danke nochmal bis zur nächsten Frage..gg
Helmut

