yan2021
Goto Top

Excel - nach Klick auf Button Inhalte übertragen

Haaaalllooo Ihr lieben Admin-User.

Im Moment ist Cheffe ziemlich aktiv face-wink
Ich soll jetzt ein kleines Formular in Excel bauen. Wir arbeiten mit Excel 2016.

Es soll ein Formular werden, welches unten mehrere Zeilen hat, die nach und nach mit Daten gefüllt werden sollen.
Oben sollen dann die Eingabefelder sein, aus denen die Daten nach unten in die zu füllenden Zeilen übertragen werden sollen.
Dazu gibt es einen Button, über den die Daten per Klick nach unten in die Zellen übertragen werden sollen.
Gleichzeitig sollen mit dem Klick die zuvor ausgefüllten Felder auch gelöscht werden. Die Daten in den Zellen unten sollen natürlich erhalten bleiben face-smile

Damit Ihr besser versteht, wovon ich hier rede, habe ich mal ein Excel-Testformular gebastelt, wo Ihr sehen könnt, was in der Datei passieren soll. Ihr könnt sie hierüber runterladen.

Und hier auch mal ein Screenshot des Testformulars:
testformular

Wie Ihr seht, befinden sich in Zeile 19 schon Daten der vorherigen Übertragung.
Die Daten, die jetzt in Zeile 20 zu sehen sind wären also jetzt mit einem Klick auf den Button schon übertragen worden.
Im Beispiel ist der obere Eingabebereich (grüne Zellen) nicht gelöscht, was aber eben durch einen Klick auf den Button auch geschehen sollte.

Am Ende soll es einfach so sein, dass man oben im grünen Bereich immer wieder neue Daten eingeben kann, die dann per Klick auf den gelben Button nach unten übertragen und dann oben gelöscht werden, damit dort wieder neue Daten eingetragen werden können.

Wichtig wäre dabei, dass Excel immer schaut, ob im unteren Bereich (Zeile 19 - 29) eine Zeile schon gefüllt ist und dann automatisch die nächste Zeile nimmt face-wink

Ich hoffe, Ihr habt meine Erklärung verstanden. Aber mit der hochgeladenen Excel-Datei und dem Screenshot dürfte das für Euch sicher kein Problem sein.

Bin gespannt.......... face-wink

Grüße von
Yan face-wink

Content-ID: 1444598217

Url: https://administrator.de/forum/excel-nach-klick-auf-button-inhalte-uebertragen-1444598217.html

Ausgedruckt am: 14.04.2025 um 12:04 Uhr

149569
149569 29.10.2021 aktualisiert um 11:00:52 Uhr
Goto Top
Bidde
Werte aus einer Excel Tabelle in eine andere importieren.

Ich soll jetzt ein kleines Formular in Excel bauen. Wir arbeiten mit Excel 2016.
Dann mach doch. Offensichtlich bist du für viele Dinge dann doch der falsche Ansprechpartner wenn du deine Arbeit hier gleich stapelweise auslagerst ...
MirkoKR
MirkoKR 29.10.2021 um 10:58:12 Uhr
Goto Top
Hi.
Zunächst Mal (bleibt gleich) ist etwas irritierend... es handelt sich wohl um stets gleiche Name:ID Zuordnungen, gelle?

Aber: schon Mal einen Blick auf MS Access oder Vergleichbares geworfen? M.E. lässt sich sowas damit eleganter lösen.

.
Yan2021
Yan2021 29.10.2021 aktualisiert um 11:32:05 Uhr
Goto Top
Danke für Eure Antworten.

@149569
Nö, leider bin ich der richtige Ansprechpartner. Wir haben hier halt sonst Niemanden, der das machen könnte face-wink
Aber danke für den Link. Schaue mir das mal näher an.

@MirkoKR
Ja, Du hast Recht. Ich habe halt unten dann doch unterschiedliche Einträge in die Zeilen gemacht. War halt nur, damit man sieht, dass jeweils neue Daten übertragen werden müssen.
Mit Access kenne ich mich dann mal überhaupt nicht aus. Daher wäre mir Excel lieber.

Update:
Ich habe schon eine Zwischenlösung gefunden.
Und zwar habe ich einen grafischen Button eingesetzt, dem ich ein Makro zugewiesen habe.
Dieses Makro löscht durch Klick auf den Button den oberen (grünen) Bereich.

Hier das Makro:
1
2
3
4
5
6
7
8
9
10
Sub Felder_löschen()
'  
' Felder_löschen Makro  
' Eingabefelder löschen  
'  
    Range("B4:D4,B5,B6:D6,B7:D7,B8:D8,B9,B10,B11,B12").Select  
    Range("B12").Activate  
    Selection.ClearContents
    Range("A4").Select  
End Sub

Das funktioniert also schon mal gut face-smile

Aber die Frage war nun, wie der gleiche Klick auf diesen Botton zusätzlich auch noch die Daten in die Zeilen unten überträgt. Dabei ist (jedenfalls für mich) das größte Problem, dass dabei die erste Zeile ausgewählt werden muss, die keine Daten enthält.

Dazu habe ich schon diese Lösung gefunden, die ich von den Zellen her schon mal an meine Datei angepaßt habe:
1
2
3
4
5
6
7
Option Explicit
Private Sub CommandButton1_Click()
Dim nextRow As Long
nextRow = [a65536].End(xlUp).Row + 1
Range("A" & nextRow, "I" & nextRow) = [B4:D4,B5,B6:D6,B7:D7,B8:D8,B9,B10,B11,B12].Value  
[B4:D4,B5,B6:D6,B7:D7,B8:D8,B9,B10,B11,B12].Clear
End Sub

Eigentlich müßte dieser Code alles zusammen machen (übertragen und löschen).
Aber leider kommt dann die Fehlermeldung "Fehler beim Kompilieren". Denke es hat mit dem "Command Button"-Eintrag im Code zu tun.

Könnt Ihr da weiterhelfen?

Grüße von
Yan face-wink
MirkoKR
MirkoKR 29.10.2021 aktualisiert um 13:07:26 Uhr
Goto Top
Zitat von @Yan2021
Mit Access kenne ich mich dann mal überhaupt nicht aus. Daher wäre mir Excel lieber.

Naja, irgendwann fängt jeder an.

Im ersten Entwicklungsschritt würdest du in Access:
1. "nur" deine Tabelle mit deinen Feldern anlegen ...
2. Mit dem Access-Formular-Assistenten ein Eingabeformular erstellen

Im Prinzip: Fertig.

Über den Access-Bericht-Assistent kannst du einen Manager-Schönen-Bericht generieren...

Oder in Excel die Daten aus Access importieren und weiter verarbeiten...

Auf YouTube und viele sonstwo gibt's tolle Tutorials. Für dein Ziel solltest du nicht mal ne halbe Stunde brauchen und erstmal nichtmal eine Zeile Code...

Der Erfolg wird dich aber sicher dazu verführen das auszubauen ....

Trau dich ; - )

.
149569
149569 29.10.2021 aktualisiert um 13:07:31 Uhr
Goto Top
Zitat von @Yan2021:
@149569
Nö, leider bin ich der richtige Ansprechpartner.
Offensichtlich nicht sonst müsstest du hier ja nicht erst fragen face-smile

1
2
3
4
5
6
Sub DatenEinfügen()
    With ActiveSheet
        .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(1, 9).Value = WorksheetFunction.Transpose(.Range("B4:B12"))  
        .Range("B4:B12").Value = ""  
    End With
End Sub
Feddisch, Freidaach halt ....
Yan2021
Yan2021 29.10.2021 aktualisiert um 13:12:18 Uhr
Goto Top
...Ihr wart schneller face-wink
Yan2021
Yan2021 29.10.2021 um 13:50:59 Uhr
Goto Top
@MirkoKR

Das wäre vielleicht mal was für die Zukunft. Jetzt muss ich zuerst mal diese Excel-Datei umsetzen und es gibt ja jetzt schon ne gute Lösung. Danke aber für Deine Tipps.

@149569

Deshalb hatte ich ja das "leider" davor geschrieben face-wink

Danke Dir für den Code.
Der funktioniert sehr gut.
Werde mal ein bisschen damit weiter testen... aber sieht alles gut aus.

Grüße von
Yan face-wink
MirkoKR
MirkoKR 29.10.2021 um 14:17:26 Uhr
Goto Top
Zitat von @Yan2021:

@MirkoKR

Das wäre vielleicht mal was für die Zukunft. Jetzt muss ich zuerst mal diese Excel-Datei umsetzen und es gibt ja jetzt schon ne gute Lösung. Danke aber für Deine Tipps.

Mach das.

Dazu noch ein Kleiner Tipp:

statt die Daten in einer Tabelle im selben Tabellenblatt anzufügen, lagerst du diese vielleicht auf ein anderes Tabelleblatt aus.
Dafür muss nur das Ziel im Code angepasst werden.

Das erleichtert dir, die Ergebnistabelle zu (Auto-)Formatieren und die Excel Funktionen für Sortieren, Filtern und Suchen zu benutzen...
Yan2021
Yan2021 04.11.2021 aktualisiert um 13:59:35 Uhr
Goto Top
Sorry Leute - ich muss leider nochmal nachfragen. face-wink

Vorher das war ja eine Testdatei.
Jetzt habe ich die eigentliche Datei erstellt und den oben genannten Code von "hacktor" entsprechend angepaßt, wie folgt:

1
2
3
4
5
6
7
8
Sub Daten_übertragen()

With ActiveSheet
        .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(1, 9).Value = WorksheetFunction.Transpose(.Range("B8,B9,B10,B11,B12,B14,C10,C14,D14,E14"))  
        .Range("B8,B9,B10,B11,B12,B14,C10,C14,D14,E14").Value = ""  
        Range("B8").Select  
    End With
End Sub

Aber jetzt beginnt der Inhalt, der übertragen wird, erst in Spalte "E", also in der 5. Spalte, statt in Spalte "A".

Genau gesagt:
Statt von Spalte A - E, habe ich nun die Einträge in den Spalten E - I.

Zusätzlich wurden auch die Zellen "B9" und "C10" nicht gelöscht face-sad

Kann mir hier nochmal jemand helfen.
Mit dem Code funktionierte es bei meiner Testdatei ja sehr gut.
Und das einzige was ich angepaßt habe, sind halt die Ranges.

Grüße von
Yan face-wink
149569
149569 04.11.2021 aktualisiert um 14:29:22 Uhr
Goto Top
Zitat von @Yan2021:
Zusätzlich wurden auch die Zellen "B9" und "C10" nicht gelöscht face-sad
Wohl weil du hier Zellen zu einer zusammengefasst hast und diese dann eine andere Adresse hat, wir kennen ja dein neues Sheet ja nicht face-wink.
Und das einzige was ich angepaßt habe, sind halt die Ranges.
Das geht in dem Fall nicht weil das ein Range ist der einerseits nicht mehr zusammenhängend ist anderseits auch aus mehreren Spalten besteht, solche Ranges kannst du nicht mit der oben benutzten Funktion "Transponieren", das musst du dann anders machen
1
2
3
4
5
6
7
Sub Daten_übertragen()
    With ActiveSheet
        .Cells(Rows.Count, "E").End(xlUp).Offset(1, 0).Resize(1, 9).Value = Array(.Range("B8"), .Range("B9"), .Range("B10"), .Range("B11"), .Range("B14"), .Range("C10"), .Range("C14"), .Range("D14"), .Range("E14"))  
        .Range("B8,B9,B10,B11,B12,B14,C10,C14,D14,E14").Value = ""  
        Range("B8").Select  
    End With
End Sub

Ab und zu auch mal Doku lesen hilft übrigens auch ungemein
https://docs.microsoft.com/de-de/office/vba/api/overview/excel
Und bei Zweifeln den Makro-Recorder benutzen dann erhältst du einen ersten Ansatz welche Funktionen zum Einsatz kommen.