Supportnet / Forum / Tabellenkalkulation
Werte aus Tabelle per Button in andere übertragen
Frage
Hallo Excel-Freaks,
ich bin ziemlicher Excel-Laie (insbesondere VBA)
und habe folgende Herausforderung (heutzutage sagt ja keiner mehr PROBLEM!):
Ich hab ein Worksheet, in dem in meine Rechnungen erstelle und im gleichen Excel-File ein zweites Worksheet, dass die komplette Auflistung meiner Rechnungen hat.
Ich will nun eine Rechnung erstellen und dann per Button gewisse Zellen (Rechnungsempfänger, Rechnungsdatum, Rechnungsbetrag..) an das andere Worksheet übertragen; dort muss eine neue Zeile eingefügt werden und die übertragten Zellen in die entsprechenden Spalten eingetragen werden.
Den Button hab ich mir zumindestens schon mal hingelegt und nu kommt VBA....
Hat dazu jemand eine Lösung? Das wäre toll!!!!
Danke im Voraus,
Dirk
Antwort 1 von coros
Moin Dirk,
da Du etwas wenig darüber schreibst, welche Zellen kopiert werden sollen und wo in dem neuen Tabellenblatt eine Leerzeile eingefügt werden soll, kommt hier mal ein recht allgemeiner Code. Den kopierst Du in das VBA Projekt der Tabelle, in der auch Deine Schaltfläche vorhanden ist.
Dieser Code fügt in dem Tabellenblatt2, in Zeile 3, eine Leerzeile ein und kopiert danach in dem gerade aktiven Blatt die Zellen A1, B1 und C1. Diese werden dann in der vorher eingefügten Leerzeile wieder in Zelle A3 eingefügt. Die Bereiche für das Kopieren und das Einfügen der Leerzeile müssen sicherlich noch angepasst werden. Dazu muss, wenn andere Zellen als A2, B2 und C2 kopiert werden sollen, in der Zeile
Range("A2,B2,C2").Copy Worksheets("Tabelle2").Range("A3")
die Zellbezeichnungen in der Klammer nach dem ersten Range geändert werden. Genauso verhält es sich mit dem Einfügen. Soll an einer anderen Stelle eingefügt werden als A3 in dem Tabellenblatt 2, muss die Bezeichnung in der Klammer des 2. Range geändert werden. Bei einem anderen Blattnamen den Text "Tabelle2" ändern. Wenn in einer anderen Zeile, als Zeile 3, eine Leerzeile eingfügt werden soll, dann in Zeile
Worksheets("Tabelle2").Rows("3:3").Insert Shift:=xlDown
in der Klammer hinter Rows, die Zeilennummer ändern. Den Blattnamen wie oben beschrieben änden.
Da Du ja geschrieben hast, dass Du Dich nicht mit VBA (Visual Basic) auskennst, kommt hier eine kurze Anweisung, wie Du den Code in Deine Tabelle bekommst.
1. Markiere die Anweisung aus diesem Beitrag und Kopiere (Strg c) diesen.
2. Klicke in Deiner Exceldatei in der Menüleiste nacheinander auf Extras => Makro => Visual Basic Editor oder drücke die Tastenkombination Alt F11
3. In dem neu geöffneten Fenster suche auf der linken Seite nach dem Eintrag VBA Projekt(Hier der Name Deiner Tabelle)
4. Klicke danach in dem linken Fenster auf den Eintrag Tabelle1(Dein Tabellenname) oder Tabelle2(Dein Tabellenname),bzw die Tabelle, in dem der Code wirken soll.
5. Füge nun die vorher kopierte Anweisung in das rechte leere Fenster ein.
Ich hoffe, das der Button, den Du in Deinem Tabellenblatt eingefügt hast von der Symbolleiste Steuerelement/Toolbox stammt. Denn nur dann kann der obige Code funktionieren. Wenn nicht öffne die Symbolleiste mal (Ansicht => Symbolleiste => Steuerelement/Toolbox) und klicke die 6. Schaltfläche von links an und füge eine neue Schaltfläche ein. Danach musst Du zum Beenden des Entwurfmodus noch die erste Schaltfläche von links in der Symbolleiste anklicken.
Du solltest zum Abschluss noch die Sicherheitseinstellung, die beim Öffnen der Datei abgefragt wird, kontrollieren. Klicke dazu nacheinander in der Menüleiste wieder auf Extras => Makro und dann auf Sicherheit.... Gehe, falls nicht schon angezeigt, auf die Registerkarte Sicherheitsstufe und schaue dort nach, ob die Einstellung Mittel aktiviert ist. Wenn nicht, aktiviere diese Einstellung, da sonst der Code nicht ausgeführt werden kann. Beim nächsten Öffnen Deiner Datei kommt eine Abfrage, ob Makros aktiviert oder deaktiviert werden sollen. Klicke auf aktivieren und der Code wird ausgeführt.
Ich hoffe, Du kommst klar. Wenn nicht, melde Dich noch mal. Wenn Du einen genaueren Code als den obigen benötigst, musst Du schon etwas genauer schreiben, was wann wo passieren soll und was wohin kopiert werden soll. Denn dies hier ist ein Computerforum, in dem keiner hellsehen kann, glaub ich zumindest. ;-)
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.
da Du etwas wenig darüber schreibst, welche Zellen kopiert werden sollen und wo in dem neuen Tabellenblatt eine Leerzeile eingefügt werden soll, kommt hier mal ein recht allgemeiner Code. Den kopierst Du in das VBA Projekt der Tabelle, in der auch Deine Schaltfläche vorhanden ist.
Private Sub CommandButton1_Click()
Worksheets("Tabelle2").Rows("3:3").Insert Shift:=xlDown
Range("A2,B2,C2").Copy Worksheets("Tabelle2").Range("A3")
End SubDieser Code fügt in dem Tabellenblatt2, in Zeile 3, eine Leerzeile ein und kopiert danach in dem gerade aktiven Blatt die Zellen A1, B1 und C1. Diese werden dann in der vorher eingefügten Leerzeile wieder in Zelle A3 eingefügt. Die Bereiche für das Kopieren und das Einfügen der Leerzeile müssen sicherlich noch angepasst werden. Dazu muss, wenn andere Zellen als A2, B2 und C2 kopiert werden sollen, in der Zeile
Range("A2,B2,C2").Copy Worksheets("Tabelle2").Range("A3")
die Zellbezeichnungen in der Klammer nach dem ersten Range geändert werden. Genauso verhält es sich mit dem Einfügen. Soll an einer anderen Stelle eingefügt werden als A3 in dem Tabellenblatt 2, muss die Bezeichnung in der Klammer des 2. Range geändert werden. Bei einem anderen Blattnamen den Text "Tabelle2" ändern. Wenn in einer anderen Zeile, als Zeile 3, eine Leerzeile eingfügt werden soll, dann in Zeile
Worksheets("Tabelle2").Rows("3:3").Insert Shift:=xlDown
in der Klammer hinter Rows, die Zeilennummer ändern. Den Blattnamen wie oben beschrieben änden.
Da Du ja geschrieben hast, dass Du Dich nicht mit VBA (Visual Basic) auskennst, kommt hier eine kurze Anweisung, wie Du den Code in Deine Tabelle bekommst.
1. Markiere die Anweisung aus diesem Beitrag und Kopiere (Strg c) diesen.
2. Klicke in Deiner Exceldatei in der Menüleiste nacheinander auf Extras => Makro => Visual Basic Editor oder drücke die Tastenkombination Alt F11
3. In dem neu geöffneten Fenster suche auf der linken Seite nach dem Eintrag VBA Projekt(Hier der Name Deiner Tabelle)
4. Klicke danach in dem linken Fenster auf den Eintrag Tabelle1(Dein Tabellenname) oder Tabelle2(Dein Tabellenname),bzw die Tabelle, in dem der Code wirken soll.
5. Füge nun die vorher kopierte Anweisung in das rechte leere Fenster ein.
Ich hoffe, das der Button, den Du in Deinem Tabellenblatt eingefügt hast von der Symbolleiste Steuerelement/Toolbox stammt. Denn nur dann kann der obige Code funktionieren. Wenn nicht öffne die Symbolleiste mal (Ansicht => Symbolleiste => Steuerelement/Toolbox) und klicke die 6. Schaltfläche von links an und füge eine neue Schaltfläche ein. Danach musst Du zum Beenden des Entwurfmodus noch die erste Schaltfläche von links in der Symbolleiste anklicken.
Du solltest zum Abschluss noch die Sicherheitseinstellung, die beim Öffnen der Datei abgefragt wird, kontrollieren. Klicke dazu nacheinander in der Menüleiste wieder auf Extras => Makro und dann auf Sicherheit.... Gehe, falls nicht schon angezeigt, auf die Registerkarte Sicherheitsstufe und schaue dort nach, ob die Einstellung Mittel aktiviert ist. Wenn nicht, aktiviere diese Einstellung, da sonst der Code nicht ausgeführt werden kann. Beim nächsten Öffnen Deiner Datei kommt eine Abfrage, ob Makros aktiviert oder deaktiviert werden sollen. Klicke auf aktivieren und der Code wird ausgeführt.
Ich hoffe, Du kommst klar. Wenn nicht, melde Dich noch mal. Wenn Du einen genaueren Code als den obigen benötigst, musst Du schon etwas genauer schreiben, was wann wo passieren soll und was wohin kopiert werden soll. Denn dies hier ist ein Computerforum, in dem keiner hellsehen kann, glaub ich zumindest. ;-)
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 Dirk_04
Hi Coros,
ich hab's noch nicht ausprobiert, aber ich wollt' mich mal direkt für die extrem prompte und ausführliche Anleitung bedanken.
Das ist echt selten geworden im Netz, dass man so ein hilfreiches Board findet!
1000dank!
Dirk
ich hab's noch nicht ausprobiert, aber ich wollt' mich mal direkt für die extrem prompte und ausführliche Anleitung bedanken.
Das ist echt selten geworden im Netz, dass man so ein hilfreiches Board findet!
1000dank!
Dirk
Antwort 3 von Dirk_04
Hallo Coros,
wenn in der zu kopierenden Zelle einfach eine Zahl steht, dann klappt das Ganze. In der Zelle steht aber leider 'ne Formel (Summe aus Nettobetrag + MwSt) und dann bekomme ich immer #BEZUG in der Rechnungsliste. Kannst Du mir das noch erklären; der Rest klappt's super!
Danke,
Dirk
wenn in der zu kopierenden Zelle einfach eine Zahl steht, dann klappt das Ganze. In der Zelle steht aber leider 'ne Formel (Summe aus Nettobetrag + MwSt) und dann bekomme ich immer #BEZUG in der Rechnungsliste. Kannst Du mir das noch erklären; der Rest klappt's super!
Danke,
Dirk
Antwort 4 von coros
Hi Dirk,
dann sollte der Code folgendermaßen aussehen.
Bei dem neuen Code werden nur die Werte aus der Tabelle eingefügt. In der allten wurde alles eingefügt. So eben auch wenn eine Formel in dem zu kopierenden Bereich vorhanden war, dann eben diese Formel. Tausche ihn einfach gegen den alten Code aus.
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.
dann sollte der Code folgendermaßen aussehen.
Private Sub CommandButton1_Click()
Worksheets("Tabelle2").Rows("3:3").Insert Shift:=xlDown
Range("A2,B2,C2").Copy
Worksheets("Tabelle2").Range("A3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End SubBei dem neuen Code werden nur die Werte aus der Tabelle eingefügt. In der allten wurde alles eingefügt. So eben auch wenn eine Formel in dem zu kopierenden Bereich vorhanden war, dann eben diese Formel. Tausche ihn einfach gegen den alten Code aus.
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 5 von Dirk_04
Geil! Funzt jetzt auch! Jetzt hab ich noch ein letztes (hoffentlich) Problem, dass in der Rechnungsliste die Formatierung (zB. die Spalte Rechnungsbetrag soll immer in Euro mit 2 Nachkommastellen dargestellt werden). Wenn die Zahl jetzt aus der Rechnung rüberkopiert wird, so steht da nur noch zB. 1000 statt 1.000,00 €.
Kann man das auch noch festlegen, dass die Formatierung bei Einfügen einer neuen Zeile + rüberkopieren erhalten bleibt?
Danke,
Dirk
Kann man das auch noch festlegen, dass die Formatierung bei Einfügen einer neuen Zeile + rüberkopieren erhalten bleibt?
Danke,
Dirk
Antwort 6 von coros
Hi Dirk,
so, dass sollte es dann gewesen sein. Nachfolgender Code kopiert und fügt ein und zwar den Wert und das Format.
Bei weiteren Fragen oder Problemen kannst Du Dich gerne wieder melden.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
so, dass sollte es dann gewesen sein. Nachfolgender Code kopiert und fügt ein und zwar den Wert und das Format.
Private Sub CommandButton1_Click()
Worksheets("Tabelle2").Rows("3:3").Insert Shift:=xlDown
Range("A2,B2,C2").Copy
Worksheets("Tabelle2").Range("A3").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End Sub
Bei weiteren Fragen oder Problemen kannst Du Dich gerne wieder melden.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 7 von Dirk_04
Yo, super! Läuft 1a genau so, wie ich es mir vorgestellt hatte. Super!!!!
Noch mal's VIELEN DANK für Deine klasse Hilfe.
Solltest das zu Deinem Beruf machen... :-D
Wenn's noch was gibt mach in ein neues Topic auf, da dies jetzt, wie gesagt, genau so funktioniert, wie ich mir das gedacht hatte.
Danke,
Dirk
Noch mal's VIELEN DANK für Deine klasse Hilfe.
Solltest das zu Deinem Beruf machen... :-D
Wenn's noch was gibt mach in ein neues Topic auf, da dies jetzt, wie gesagt, genau so funktioniert, wie ich mir das gedacht hatte.
Danke,
Dirk
Antwort 8 von coros
Hi Dirk,
feut mich, dass wir das hinbekommen haben. Danke auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
feut mich, dass wir das hinbekommen haben. Danke auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 9 von Dirk_04
Ach, einen hab ich noch....
es geht sich immer noch um die gleiche Tabelle.
Wenn ich nun Daten aus einem Worksheet per SVERWEIS in eine andere übertragen möchte und dabei aber auch die Formatierung aus dem Worksheet übernehmen möchte, wo die Daten drin sind, muss ich das dann auch per VBA machen?
Es geht sich darum, dass in der selben Zelle mal ein Eurobetrag (mit 2 Nachkommastellen & Währungssymbol); mal eine Stückzahl (ohne 2 Dezimalstellen/ohne Währungszeichen) stehen soll.
Geht das auch ohne VKA?
Danke noch mal,
Dirk
es geht sich immer noch um die gleiche Tabelle.
Wenn ich nun Daten aus einem Worksheet per SVERWEIS in eine andere übertragen möchte und dabei aber auch die Formatierung aus dem Worksheet übernehmen möchte, wo die Daten drin sind, muss ich das dann auch per VBA machen?
Es geht sich darum, dass in der selben Zelle mal ein Eurobetrag (mit 2 Nachkommastellen & Währungssymbol); mal eine Stückzahl (ohne 2 Dezimalstellen/ohne Währungszeichen) stehen soll.
Geht das auch ohne VKA?
Danke noch mal,
Dirk
Antwort 10 von coros
Moin Dirk,
mir fällt da im Moment keine Möglichkeit ohne VBA ein. Es kann aber sein, dass man das mit einer Formel eventuell hinbekommt. Nur dafür bin ich nicht der richtige. Mir liegt eben VBA mehr als Formeln. Vielleicht packst Du Deine letzte Frage mal in ein neuses Thread, dann kommt eventuell ein Formelexperte, der die helfen kann.
Bei einer VBA Lösung würde ich das über eine UserForm lösen, in der man die Eingabe, die bei Dir im Moment in dem Tabellenblatt stattfindet, auf die dann die SVERWEIS-Formel reagiert, in der UserForm erledigen würde. Man könnte diese UserForm so gestalten, dass entweder Begriffe eingegeben werden oder ein Listenfeld vorhanden ist, aus dem man die Einträge auswählt. Allerdings kann ich Dir dazu jetzt kein Beispiel hier hinschreiben, da ich vom Aufbau her Deine Tabelle nicht kenne und nicht weiß, ob das so einfach umzusetzen geht. Ein 0815 Beispiel zu kreieren wäre zwecklos, da man da auf Deine Datei zurecht schneidern müsste.
Allerdings kannst Du mir gerne mal eine Beispieldatei Deiner Rechnung schicken und ich schaue nach, wie man das mit VBA lösen könnte. Sende die Datei an E-Mail:coros@onlinehome.de. Aber wie schon geschrieben, wenn Du eine Formellösung bevorzugst, eröfffne einen neuen Thread.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
mir fällt da im Moment keine Möglichkeit ohne VBA ein. Es kann aber sein, dass man das mit einer Formel eventuell hinbekommt. Nur dafür bin ich nicht der richtige. Mir liegt eben VBA mehr als Formeln. Vielleicht packst Du Deine letzte Frage mal in ein neuses Thread, dann kommt eventuell ein Formelexperte, der die helfen kann.
Bei einer VBA Lösung würde ich das über eine UserForm lösen, in der man die Eingabe, die bei Dir im Moment in dem Tabellenblatt stattfindet, auf die dann die SVERWEIS-Formel reagiert, in der UserForm erledigen würde. Man könnte diese UserForm so gestalten, dass entweder Begriffe eingegeben werden oder ein Listenfeld vorhanden ist, aus dem man die Einträge auswählt. Allerdings kann ich Dir dazu jetzt kein Beispiel hier hinschreiben, da ich vom Aufbau her Deine Tabelle nicht kenne und nicht weiß, ob das so einfach umzusetzen geht. Ein 0815 Beispiel zu kreieren wäre zwecklos, da man da auf Deine Datei zurecht schneidern müsste.
Allerdings kannst Du mir gerne mal eine Beispieldatei Deiner Rechnung schicken und ich schaue nach, wie man das mit VBA lösen könnte. Sende die Datei an E-Mail:coros@onlinehome.de. Aber wie schon geschrieben, wenn Du eine Formellösung bevorzugst, eröfffne einen neuen Thread.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Ich möchte kostenlos eine Frage an die Mitglieder stellen:
Ähnliche Themen:
- Werte in nächste leer Zeile einer zweiten Datei übertragen
- Werte von einem Excel Tabellenblatt in ein anderes übertragen
- Werte einer Tabelle vergleichen und in einer anderen Tabelle zusammenfügen
- Werte aus Datenfeld in Listbox übertragen
- Hallo ich braucht euer hilfe ich habe in einer tabelle positive und negative werte, wie kann man die werte die sich aufheben filtern vielen dank schon

