Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA speichern in neue Zeile
05.02.2021 13:19:50
Matthias
Hallo Zusammen
Hoffe hier kann mir jemand helfen.
Ich habe eine Userform erstellt für einen Wareneingang. Hier sind per Textfelder und SpinButtons Stückzahlen einzutragen.
Es befindet sich je Artikel ein Textfeld und Button in der Userform. Wenn ich nun auf Speichern klicke, sollte es die Daten übernehmen. Dies funktioniert auch, allerdings schaffe ich es nhur das diese alle nach und nach in der gleichen Zeile eingespeichert werden.
Hierzu folgenden Code verwendet:

'Arbeitsblatt wählen
Dim Eingang As Worksheet
Set Eingang = Worksheets("Eingang")
'Erste freie Zeile Ausfindig machen
Dim last As Integer
last = Eingang.Cells(Rows.Count, 3).End(xlUp).Row + 1
'Datum
Cells(nfrei, 1).Value = TextBox_Datum.Value
'24V H4
Cells(last, 6).Value = "24V H4"
Cells(last, 7).Value = TextBox_24VH4.Text
'24V H7
Cells(last, 8).Value = "24V H7"
Cells(last, 9).Value = TextBox_24VH7.Text
'24V P21W
Cells(last, 10).Value = "24V P21W"
Cells(last, 11).Value = TextBox_24VP21W.Text

Ich möchte aber das nach jedem Artikel eine neue Zeile begonnen wird. Hierfür folgendes _
eingegeben:

'Arbeitsblatt wählen
Dim Eingang As Worksheet
Set Eingang = Worksheets("Eingang")
'Erste freie Zeile Ausfindig machen
Dim last As Integer
Dim nfrei As Integer
Dim lasts As Integer
nfrei = Eingang.Cells(Rows.Count, 3).End(xlUp).Row + 1
last = nfrei + 1
lasts = last + 1
'Datum
Cells(nfrei, 1).Value = TextBox_Datum.Value
'24V H1
If Trim(TextBox_24VH1.Text)  "" Then
Cells(nfrei, 1).Value = TextBox_Datum.Value
Cells(nfrei, 2).Value = "24V H1"
Cells(nfrei, 3).Value = TextBox_24VH1.Text
Else
End If
'24V H3
If Trim(TextBox_24VH1.Text) = "" Then
Cells(nfrei, 1).Value = TextBox_Datum.Value
Cells(nfrei, 2).Value = "24V H3"
Cells(nfrei, 3).Value = TextBox_24VH3.Text
Else
Cells(last, 1).Value = TextBox_Datum.Value
Cells(last, 2).Value = "24V H3"
Cells(last, 3).Value = TextBox_24VH3.Text
End If

Mit den If's kann ich die ersten 2-3 Artikel lösen, jedoch wird das ja irgendwann ein elendig langer code. Das geht doch bestimmt einfacher, oder?
Hab leider im Netz sonst nirgends etwas gefunden das mir bei diesem Problem helfen könnte.
Schonmal vielen Dank für die Hilfe
Schöne Grüße
Matthias

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA speichern in neue Zeile
05.02.2021 13:32:24
Hajo_Zi
Halo Matthias,
warum unterschiedlioche Zeile es sind doch schon unterschidliche Spalten.
ells(last, 6).Value = "24V H4"
Cells(last+1, 7).Value = TextBox_24VH4
'24V H7
Cells(last+2, 8).Value = "24V H7"
Cells(last+3, 9).Value = TextBox_24VH7
'24V P21W
Cells(last+4, 10).Value = "24V P21W"
Cells(last+5, 11).Value = TextBox_24VP21W

AW: VBA speichern in neue Zeile
05.02.2021 13:49:57
Matthias
Hallo Hajo,
Vielen Dank erstmal.
In unterschiedliche Zeilen möchte ich speichern, weil ich die Daten mit einer Pivottabelle auslesen und auswerten möchte.
Bei unterschiedlichen Spalten komme ich da nicht klar.
Sind jedoch die Werte in den Zeilen mit Artikel bezeichnung werden diese für meine Bedürfnisse und Kentnisse richtig angezeigt.
Hatte noch vergessen dazuzuschreiben das der Artikel immer nur dann eingetragen wird, wenn in der zugehörigen TextBox auch ein Wert vorhanden ist. Das wollte ich mit der If then erreichen.
Grüße Matthias
Anzeige
AW: VBA speichern in neue Zeile
05.02.2021 14:23:47
Matthias
Hallo nochmal,
hier die Datei als Beispiel:
https://www.herber.de/bbs/user/143642.xlsm
Es geht explizit um den Eingang. Da im Ausgang keine Mehrfachauswahl erlaubt ist.
Anhand der Übersichten sieht man glaube ich was ich genau erreichen möchte mit der Speicherung der einzelnen Artikel in separate Zeilen.
Grüße Matthias
AW: VBA speichern in neue Zeile
05.02.2021 15:33:50
Matthias
s
AW: VBA speichern in neue Zeile
05.02.2021 16:00:51
Yal
Hallo Matthias,
Sub test()
Dim Ctrl
For Each Ctrl In Me.Controls
If InStr(1, Ctrl.Name, "TextBox_24VH", vbTextCompare) > 0 Then
With Eingang.Cells(Rows.Count, 3).End(xlUp)
.Offset(1, 0).Value = TextBox_Datum.Value
.Offset(1, 1).Value = Replace(Replace(Ctrl.Name, "TextBox_", ""), "VH", "V H")
.Offset(1, 2).Value = Ctrl.Text
End With
End If
Next
End Sub
VG
Yal
Anzeige
AW: VBA speichern in neue Zeile
05.02.2021 16:03:26
Yal
Version 2: weil es auch "24VP" gibt...
Sub test()
Dim Ctrl
For Each Ctrl In Me.Controls
If InStr(1, Ctrl.Name, "TextBox_24V", vbTextCompare) > 0 Then
With Eingang.Cells(Rows.Count, 3).End(xlUp)
.Offset(1, 0).Value = TextBox_Datum.Value
.Offset(1, 1).Value = Replace(Ctrl.Name, "TextBox_24V", "24V ")
.Offset(1, 2).Value = Ctrl.Text
End With
End If
Next
End Sub

AW: VBA speichern in neue Zeile
05.02.2021 18:03:55
Matthias
Hallo Yal,
Vielen Dank erstmal dafür, das sieht ja schon ziemlich nach dem aus was ich möchte.
Hab das auch so ausprobiert. Er Listet dann nach unten auf, was ja passt.
Allerdings auch die, die keinen Wert enthalten, was nicht so sein sollte.
Was ich aus Version 2 geändert habe ist:

Sub Button_SaveEnd_Click()
Dim Eingang As Worksheet
Set Eingang = Worksheets("Eingang")
Dim Ctrl
For Each Ctrl In Me.Controls
If InStr(1, Ctrl.Name, "TextBox_24V", vbTextCompare) > 0 Then
With Eingang.Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = TextBox_Datum.Value
.Offset(1, 1).Value = Replace(Ctrl.Name, "TextBox_24V", "24V ")
.Offset(1, 2).Value = Ctrl.Text
End With
Else
If InStr(1, Ctrl.Name, "TextBox_12V", vbTextCompare) > 0 Then
With Eingang.Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = TextBox_Datum.Value
.Offset(1, 1).Value = Replace(Ctrl.Name, "TextBox_12V", "12V ")
.Offset(1, 2).Value = Ctrl.Text
End With
Else
If InStr(1, Ctrl.Name, "TextBox_DI", vbTextCompare) > 0 Then
With Eingang.Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = TextBox_Datum.Value
.Offset(1, 1).Value = Replace(Ctrl.Name, "TextBox_DI", "")
.Offset(1, 2).Value = Ctrl.Text
End With
End If
End If
End If
Next
ThisWorkbook.Save
ThisWorkbook.RefreshAll
Unload Me
End Sub
Kann es sein das ich hier bei den TextBox was falsch gemacht habe?
Private Sub UserForm_Initialize()
'24VH1
SpinButton_24VH1.Min = 0
SpinButton_24VH1.Value = 0
Private Sub SpinButton_24VH1_Change()
TextBox_24VH1.Text = SpinButton_24VH1.Value
End Sub
Oder könnte man das noch erweitern mit dem hier (gerade woanders gefunden)

Dim lngSpalte as Long
Dim anst as Variant
lngSpalte = 3
For anst = Eingang.Cells(Rows.Count, lngSpalte).End(xlUp).Row To 1 Step -1
If Eingang.Cells(anst, 1).Value = "" Then
Rows(anst).Delete shift:=xlUp
End If
Next anst
Nochmal Vielen Dank für die Hilfe bisher, und die die vielleicht noch kommen mag.
Grüße Matthias
Anzeige
AW: VBA speichern in neue Zeile
05.02.2021 19:52:16
Yal
Hallo Matthias,
ja, Du hast das Konzept erfasst und bist für die nächste Stufe bereit:
Sub Button_SaveEnd_Click()
Dim Eingang As Worksheet
Dim Ctrl
Dim Name
const sk = ";"
Set Eingang = Worksheets("Eingang")
For Each Ctrl In Me.Controls
For Each Name In Array("TextBox_24V;24V ", "TextBox_12V;12V ", "TextBox_DI;")
If InStr(1, Ctrl.Name, Split(Name, sk)(0), vbTextCompare) > 0 Then
If (Ctrl.Text  "" And Ctrl.Text  0) Then
With Eingang.Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = TextBox_Datum.Value
.Offset(1, 1).Value = Replace(Ctrl.Name, Split(Name, sk)(0), Split(Name, sk) _
(1))
.Offset(1, 2).Value = Ctrl.Text
End With
End If
End If
Next
Next
ThisWorkbook.Save
ThisWorkbook.RefreshAll
Unload Me
End Sub
Versuch im Direktfenster (strg+g) folgende Test:
?split("abc;def", ";")(0)
und
?split("abc;def", ";")(1)
Viel Erfolg
Yal
Anzeige
AW: VBA speichern in neue Zeile
05.02.2021 20:53:21
Matthias
Hallo Yal,
leider nur noch Bahnhof.
Da muss ich nochmal genau nachlesen was du da gebastelt hast.
Derweil hab ich es mit diesem Zusatz gelöst
On Error Resume Next
With Range("C2:C65000")
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
On Error GoTo 0
funktioniert mehr oder weniger gut. Werde mir aber dein Lösung auf jeden Fall nohcmal genau anschauen und versuchen zu begreifen :)
Herzlichen Dank für die Hilfe
SG Matthias

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige