Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte in nächstmögliche freie Zelle kopieren

Werte in nächstmögliche freie Zelle kopieren
11.11.2004 10:52:24
Tobias
Morgen,
ich habe folgendes Problem. Ich habe 3 Eingabefelder in C2, D2 und E2.
Die dort eingegebenen Werte sollen nach klick auf den Kommandobutton in die nächstmöglichen freien Spalten in A, B und C kopiert und aus den Eingabefeldern gelöscht werden.
Bild: Userbild
Anschließend werden neue Werte in die Eingabefelder eingegeben und diese sollen dann wieder UNTER die zuvor eingefügten, also die jetzt nächst möglichen freien Spalten kopiert werden.
Bild:

Die Datei https://www.herber.de/bbs/user/13306.jpg wurde aus Datenschutzgründen gelöscht

So soll nach und nach eine lange Liste entstehen.
Bin für jede Idee Dankbar!
MfG
Tobias!
Anzeige
AW: Werte in nächstmögliche freie Zelle kopieren
Boris
Hi Tobias,
ohne Fehlerbehandlung (falls z.B. die Spalten irgendwann voll sind):
Option Explicit
Private Sub CommandButton1_Click()
Dim nextRow As Long
nextRow = [a65536].End(xlUp).Row + 1
Range("A" & nextRow, "C" & nextRow) = [c2:e2].Value
[c2:e2].Clear
End Sub

Grüße Boris
Anzeige
AW: Werte in nächstmögliche freie Zelle kopieren
11.11.2004 11:26:24
Tobias
Hi Boris!
Deine Lösung klappt sofort! Echt spitze. Könntest du mir kurz die einzelnen verwendeten Befehle erklären?
Danke dir!
MfG
Tobias
AW: Werte in nächstmögliche freie Zelle kopieren
Boris
Hi Tobias,
hab´s auskommentiert und noch ein wenig erweitert.
Option Explicit

Private Sub CommandButton1_Click()
Dim nextRow As Long 'Variable für nächste freie Zeile
With [c2:e2] 'Referenz auf C2:E2
'Falls nicht alle 3 Zellen (C2:E2) gefüllt sind
If Application.CountA(.Value) <> 3 Then
'dann Hinweis: Geht nicht
MsgBox "Da fehlt noch was...", , "Kleiner Hinweis..."
'Nix eintragen und Sub verlassen
Exit Sub
End If
'ansonsten nächste freie Zeile ermitteln (in Spalte A)
nextRow = IIf([a65536] = "", [a65536].End(xlUp).Row + 1, 65536)
'Falls Spalte A voll ist
If nextRow = 65536 Then
'dann entsprechender Hinweis
MsgBox "Spalten sind voll...", , "Ende im Gelände..."
'und Sub verlassen
Exit Sub
End If
'ansonsten Werte aus C2:E2 in A:C übertragen
Range("A" & nextRow, "C" & nextRow) = .Value
'C2:E2 wieder leeren
.Clear
End With
End Sub

Grüße Boris
Anzeige
AW: Werte in nächstmögliche freie Zelle kopieren
11.11.2004 12:31:44
Tobias
Echt super, vielen Dank!
Werde diese Lösung auf meine Tabelle anpassen! Sehr Benutzerfreundlich so!
MfG
Tobias
AW: Werte in nächstmögliche freie Zelle kopieren
WernerB.
Hallo Tobias,
wie gefällt Dir das?

Sub Tobias()
Dim laRA As Long, laRB As Long, laRC As Long
laRA = Cells(Rows.Count, 1).End(xlUp).Row + 1
If laRA < 3 Then laRA = 3
laRB = Cells(Rows.Count, 2).End(xlUp).Row + 1
If laRB < 3 Then laRB = 3
laRC = Cells(Rows.Count, 3).End(xlUp).Row + 1
If laRC < 3 Then laRC = 3
Range("A" & laRA).Value = Range("C2").Value
Range("B" & laRB).Value = Range("D2").Value
Range("C" & laRC).Value = Range("E2").Value
Range("C2:E2").ClearContents
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Werte in nächstmögliche freie Zelle kopieren
11.11.2004 11:27:25
Tobias
Hallo und danke für die schnelle Hilfe!
Ich werde diesen Weg auch probieren!
Danke!
MfG
Tobias!
AW: Werte in nächstmögliche freie Zelle kopieren
Josef
Hallo tobias!
Das sollte es tun!

Private Sub CommandButton1_Click()
Dim lRow As Long
lRow = Range("A65536").End(xlUp).Row + 1
Cells(lRow, 1) = [C2]
Cells(lRow, 2) = [D2]
Cells(lRow, 3) = [E2]
[C2:E2].ClearContents
[C2].Select
End Sub

Gruß sepp
Anzeige
AW: Werte in nächstmögliche freie Zelle kopieren
11.11.2004 11:29:09
Eleni
Hi Tobias,
Angenommen deine Eingabefelder sind E2, F2, G2 und die hier eingetragenen Werte sollen jeweils in die letzte unbeschriftete Zeile der Spalten A, B und C, dann sieht das Makro so aus:

Sub Makro1()
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = ActiveSheet.Cells(2, 5)
ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = ActiveSheet.Cells(2, 6)
ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = ActiveSheet.Cells(2, 7)
ActiveSheet.Range("E2:G2").Select
Selection.ClearContents
End Sub

Ciao, Eleni
Anzeige
AW: Werte in nächstmögliche freie Zelle kopieren
11.11.2004 11:30:39
Tobias
Hallo,
danke für dieses Lösungsweg! Ist ja echt ein Spitzenforum hier!
MfG
Tobias
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte in nächstmögliche freie Zelle kopieren


Schritt-für-Schritt-Anleitung

Um Werte aus den Eingabefeldern in die nächstmöglichen freien Zellen zu kopieren, folge diesen Schritten:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne ein bestehendes.
  2. Füge einen CommandButton hinzu:
    • Gehe zu den Entwicklertools > Einfügen > Wähle den CommandButton aus.
  3. Füge folgenden VBA-Code ein:
    Private Sub CommandButton1_Click()
       Dim nextRow As Long
       nextRow = [A65536].End(xlUp).Row + 1
       Range("A" & nextRow, "C" & nextRow) = [C2:E2].Value
       [C2:E2].Clear
    End Sub
  4. Teste das Makro, indem du Werte in die Zellen C2, D2 und E2 eingibst und den Button klickst. Die Werte sollten nun in die nächstmöglichen freien Zellen in Spalte A, B und C kopiert werden.

Häufige Fehler und Lösungen

  • Fehler 1: "Da fehlt noch was..."

    • Lösung: Stelle sicher, dass alle drei Eingabefelder (C2, D2, E2) ausgefüllt sind. Das Makro überprüft die Eingaben und zeigt eine Fehlermeldung an, wenn nicht alle Felder befüllt sind.
  • Fehler 2: "Spalten sind voll..."

    • Lösung: Wenn du versuchst, Werte hinzuzufügen, wenn die Spalte A voll ist (über Zeile 65536), wird eine Fehlermeldung angezeigt. Überprüfe, ob du in der richtigen Zeile arbeitest oder ob du die Daten eventuell in andere Spalten verschieben musst.

Alternative Methoden

Es gibt mehrere Ansätze, um Werte in die nächstmöglichen freien Zellen zu kopieren. Hier sind zwei Alternativen:

  1. Makro mit spezifischen Zellen:

    Sub Tobias()
       Dim laRA As Long, laRB As Long, laRC As Long
       laRA = Cells(Rows.Count, 1).End(xlUp).Row + 1
       If laRA < 3 Then laRA = 3
       laRB = Cells(Rows.Count, 2).End(xlUp).Row + 1
       If laRB < 3 Then laRB = 3
       laRC = Cells(Rows.Count, 3).End(xlUp).Row + 1
       If laRC < 3 Then laRC = 3
       Range("A" & laRA).Value = Range("C2").Value
       Range("B" & laRB).Value = Range("D2").Value
       Range("C" & laRC).Value = Range("E2").Value
       Range("C2:E2").ClearContents
    End Sub
  2. Direktes Kopieren in ein freies Feld:

    Private Sub CommandButton1_Click()
       Dim lRow As Long
       lRow = Range("A65536").End(xlUp).Row + 1
       Cells(lRow, 1) = [C2]
       Cells(lRow, 2) = [D2]
       Cells(lRow, 3) = [E2]
       [C2:E2].ClearContents
       [C2].Select
    End Sub

Praktische Beispiele

  • Beispiel 1: Wenn du die Werte in Zellen C2, D2 und E2 hast, und du möchtest diese in die nächste freie Zelle in Spalte A, B und C kopieren, nutze den oben genannten VBA-Code.

  • Beispiel 2: Wenn deine Eingabefelder in E2, F2 und G2 sind und du diese in die letzte unbeschriftete Zeile der Spalten A, B und C kopieren möchtest, kannst du folgendes Makro verwenden:

    Sub Makro1()
       ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = ActiveSheet.Cells(2, 5)
       ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = ActiveSheet.Cells(2, 6)
       ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = ActiveSheet.Cells(2, 7)
       ActiveSheet.Range("E2:G2").Select
       Selection.ClearContents
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Es ist eine gute Praxis, Option Explicit am Anfang deiner Module zu verwenden, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Fehlerbehandlung einbauen: Implementiere eine Fehlerbehandlung in deinem Makro, um unerwartete Probleme zu erfassen und dem Benutzer hilfreiche Fehlermeldungen anzuzeigen.

  • Makros optimieren: Wenn du häufig mit großen Datenmengen arbeitest, achte darauf, die Performance deines Makros zu optimieren, indem du zum Beispiel Bildschirmaktualisierungen minimierst.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich keinen Wert überschreibe?
Nutze den Code, um die nächstgelegene freie Zelle zu finden, bevor du den Wert kopierst. Das Makro wird automatisch die nächste freie Zeile ermitteln.

2. Was passiert, wenn ich das Makro mehrmals hintereinander ausführe?
Das Makro kopiert immer in die nächstgelegene freie Zelle. Achte darauf, dass die Eingabefelder immer korrekt befüllt sind, um fehlerhafte Einträge zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige