Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

diverse Zellenwerte in eine Liste kopieren
#1
Moin und ein gutes Neues :15:

Hab vor über ein tabelarisches Formular diverse Zellenwerte
automatisch in eine Liste (Tabellenmaske) per Absenden-Button zu speichern.

Dabei soll pro Zeile automatisch eine fortlaufende ID angelegt werden,
anschließend die Zeile gewechselt werden und schließlich die Ausgangszellenwerte gelöscht werden.


Das ganze möchte ich mit VBA umsetzen, jedoch haberts ein wenig.


Code:
Private Sub CommandButton1_Click()
Datum = Range("C3")
Range("B23").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
ActiveCell = Datum
Else
ActiveCell = Datum
End If

Name = Range("C5")
Range("C23").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
ActiveCell = Name
Else
ActiveCell = Name
End If
End Sub

Die Zellen C3 und C5 (weitere Zellenwerte noch offen) sollen pro Klick beginnend in Zeile 23
[C22=Datum, C23=Name] nebeneinander eingetragen werden und automatischdie Zeile wechseln.
Die ID soll in Spalte A kommen doch soweit bin ich noch nicht.

Soweit funktioniert das schon mit den ersten beiden Zeilen, auch der Zeilenwechsel jedoch lassen sich nicht mehr als 2 Zeilen anlegen.
Die 2.Zeile wird immer wieder überschrieben. Was zum Waldmichelsholdi mach ich bloß falsch.
Antworten Top
#2
Hallo,

die fortlaufende ID sollte von Anfang an mit einbezogen werden.
Hier mal eine mögliche Variante:
Private Sub CommandButton1_Click()
Dim Zeile As Long
Zeile = Application.Max(22, Cells(Rows.Count, 1).End(xlUp).Row)
Cells(Zeile + 1, 1) = Zeile - 21
Cells(Zeile + 1, 2) = Range("C3")
Cells(Zeile + 1, 3) = Range("C5")
Range("C3") = ""
Range("C5") = ""
End Sub
Gruß Uwe
Antworten Top
#3
Verdammt vielen Dank das ist sehr hilfreich.  :100:

Ich habe noch nicht viel mit VBA gearbeitet.
Ab der 3. Zeile ist deine Makro selbsterklärend,
aber kannst du mir kurz erklären was in der Variable
"Zeile" steht bzw. was es im einzelnen macht.

Ich möchte das auch noch verstehen.
Antworten Top
#4
Hallo,

Zeile enthält die Nummer der Zeile. Wink
Es wird in Spalte A (entspricht 1) die erste belegte Zelle von unten nach oben gesucht. Gäbe es keine, wäre das Ergebnis 1 (Zeile 1). Darum wird per MAX()-Funktion mindestens 22 zurückgegeben.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Wiskyjim
Antworten Top
#5
Ok hab ich verstanden. Die unterste gültige Zeile ist dann eben die 22 und weil noch 1 dazu addiert wird fängt er in der 23. das Eintragen an.

Ich experimentiere eben noch mit dem Datum herum.
Habe mein Formular jetzt ein wenig schöner gestaltet und eben 3 Dropdown-Listen erstellt.
Jeweils eine für Tag, Monat und Jahr.

In B23 soll das zusammengesetzte Datum TT.MM.JJJJ mit dem "."-Trennzeichen eingetragen werden.


Code:
Cells(Zeile + 1, 2&.&3&.&4) = Range("C5", ".", "C6", ".", "C7")

Dass das falsch ist lässt mich Excel wissen.
Doch darf ich das einfach so zusammen puzzeln?

Dachte links die Werte 2&3 usw. sind Ausdrücke für die Zellenwerte :19:

Ich hatte schonmal so eine Tabelle (Maske) angelegt und das war eine Sau-Arbeit und das ohne VBA.
Antworten Top
#6
Heyho bin mitlerweile draufgekommen was ich falsch gemacht habe.
Hab im Netz noch ein wenig nachgelesen und siehe da jetzt funktionierts :19:

Mein Problem waren die Trennzeichen. Ich wusste einfach nicht wie das schreiben muss.

Das mit dem Datum ist sicherlich noch nicht optimal gelöst und werde ich mit der Zeit
noch besser hinbekommen, aber vorerst bin ich mit dem Ergebnis zufrieden.

Wen's interessiert:
Private Sub CommandButton1_Click()
Dim Zeile As Long
Dim Day As Long
Dim Month As Long
Dim Year As Long
Zeile = Application.Max(22, Cells(Rows.Count, 1).End(xlUp).Row)
'Spalte1 ID
Cells(Zeile + 1, 1) = Zeile - 21

'Spalte2 Datum
Day = Range("F3")
If Day < 10 Then
Tag = 0 & Day
Else
Tag = Day
End If

Month = Range("H3")
If Month < 10 Then
Monat = 0 & Month
Else
Monat = Month
End If

Year = Range("J3")
Jahr = Year
Cells(Zeile + 1, 2) = Tag & "." & Monat & "." & Jahr

'Spalte3-12 Name, Ort und Mengenangaben
Cells(Zeile + 1, 3) = Range("F5")
Cells(Zeile + 1, 4) = Range("F7")
Cells(Zeile + 1, 5) = Range("C12")
Cells(Zeile + 1, 6) = Range("C14")
Cells(Zeile + 1, 7) = Range("F11")
Cells(Zeile + 1, 8) = Range("F13")
Cells(Zeile + 1, 9) = Range("F15")
Cells(Zeile + 1, 10) = Range("K11")
Cells(Zeile + 1, 11) = Range("K13")
Cells(Zeile + 1, 12) = Range("K15")


'Formularzellen reset
Range("F3") = ""
Range("H3") = ""
Range("J3") = ""
Range("F5") = ""
Range("F7") = ""
Range("C12") = ""
Range("C14") = ""
Range("F11") = ""
Range("F13") = ""
Range("F15") = ""
Range("K11") = ""
Range("K13") = ""
Range("K15") = ""
End Sub
Schon mal vielen besten Dank an dich Kuwer
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste