Clever-Excel-Forum

Normale Version: VBA Zeilen einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich habe ein UserForm mit verschiedenen Eingaben die in eine Tabelle geschrieben werden.

Eine Eingabe ist die Auftragsnummer sowie weitere Container

Wenn ich Auftragsnummer 12345 eingebe und in weitere Container eine Zahl, soll automatisch mehrere Auftragsnummern erstellt werden.

Bsp.:

12345 Container = 1

12345
12345-1

12345 Container = 2

12345
12345-1
12345-2

usw.

Folgende VBA hab ich. 

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
If txtW_Container = 1 Then
ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value & "-1"
End If

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
If txtW_Container = 2 Then
ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value & "-1"
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value & "-2"
End If

Wie kann ich es automatisieren?

Vielen Dank für Eure Hilfe
Hallo,

wenn du schon was hast, wäre es nett, das hier auch einzustellen. Oder glaubst du, irgend jemand wird das nachbauen?
Der VBA Code gefällt Dir wohl nicht?
Hallo,

Zitat:Der VBA Code gefällt Dir wohl nicht?

ich finde den so was von super! Aber wie soll man was testen, ohne die zugehörige Datei?
Es soll eine automation werden!

Es kann unzählige Containeranzahl sein.

Und der jetzige Code währe sehr aufwändig und nicht automatisch!

Mein jetziger Code:

Code:
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value
ActiveSheet.Cells(last, 5).Value = Me.txtDestination.Value
ActiveSheet.Cells(last, 6).Value = Me.txtProdukt.Value
ActiveSheet.Cells(last, 7).Value = Me.txtMenge.Value
ActiveSheet.Cells(last, 8).Value = Me.txtCharge.Value
ActiveSheet.Cells(last, 9).Value = Me.txtFremd.Value
ActiveSheet.Cells(last, 10).Value = Me.txtContainer.Value
ActiveSheet.Cells(last, 11).Value = Me.txtPlombennummer.Value
ActiveSheet.Cells(last, 12).Value = Me.txtZollplombe.Value
ActiveSheet.Cells(last, 13).Value = Me.txtSchiff.Value
ActiveSheet.Cells(last, 14).Value = Me.txtEta.Value
ActiveSheet.Cells(last, 15).Value = Me.txtStatus.Value
ActiveSheet.Cells(last, 16).Value = Me.txtW_Container.Value
ActiveSheet.Cells(last, 17).Value = Me.txtInfo.Value
ActiveSheet.Cells(last, 18).Value = Me.txtVersandstatus.Value

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
If txtW_Container = 1 Then
ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value & "-1"
ActiveSheet.Cells(last, 5).Value = Me.txtDestination.Value
ActiveSheet.Cells(last, 6).Value = Me.txtProdukt.Value
ActiveSheet.Cells(last, 7).Value = Me.txtMenge.Value
ActiveSheet.Cells(last, 8).Value = Me.txtCharge.Value
ActiveSheet.Cells(last, 9).Value = Me.txtFremd.Value
ActiveSheet.Cells(last, 10).Value = Me.txtContainer.Value
ActiveSheet.Cells(last, 11).Value = Me.txtPlombennummer.Value
ActiveSheet.Cells(last, 12).Value = Me.txtZollplombe.Value
ActiveSheet.Cells(last, 13).Value = Me.txtSchiff.Value
ActiveSheet.Cells(last, 14).Value = Me.txtEta.Value
ActiveSheet.Cells(last, 15).Value = Me.txtStatus.Value
ActiveSheet.Cells(last, 16).Value = Me.txtW_Container.Value
ActiveSheet.Cells(last, 17).Value = Me.txtInfo.Value
ActiveSheet.Cells(last, 18).Value = Me.txtVersandstatus.Value
End If

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
If txtW_Container = 2 Then
ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value & "-1"
ActiveSheet.Cells(last, 5).Value = Me.txtDestination.Value
ActiveSheet.Cells(last, 6).Value = Me.txtProdukt.Value
ActiveSheet.Cells(last, 7).Value = Me.txtMenge.Value
ActiveSheet.Cells(last, 8).Value = Me.txtCharge.Value
ActiveSheet.Cells(last, 9).Value = Me.txtFremd.Value
ActiveSheet.Cells(last, 10).Value = Me.txtContainer.Value
ActiveSheet.Cells(last, 11).Value = Me.txtPlombennummer.Value
ActiveSheet.Cells(last, 12).Value = Me.txtZollplombe.Value
ActiveSheet.Cells(last, 13).Value = Me.txtSchiff.Value
ActiveSheet.Cells(last, 14).Value = Me.txtEta.Value
ActiveSheet.Cells(last, 15).Value = Me.txtStatus.Value
ActiveSheet.Cells(last, 16).Value = Me.txtW_Container.Value
ActiveSheet.Cells(last, 17).Value = Me.txtInfo.Value
ActiveSheet.Cells(last, 18).Value = Me.txtVersandstatus.Value

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value & "-2"
ActiveSheet.Cells(last, 5).Value = Me.txtDestination.Value
ActiveSheet.Cells(last, 6).Value = Me.txtProdukt.Value
ActiveSheet.Cells(last, 7).Value = Me.txtMenge.Value
ActiveSheet.Cells(last, 8).Value = Me.txtCharge.Value
ActiveSheet.Cells(last, 9).Value = Me.txtFremd.Value
ActiveSheet.Cells(last, 10).Value = Me.txtContainer.Value
ActiveSheet.Cells(last, 11).Value = Me.txtPlombennummer.Value
ActiveSheet.Cells(last, 12).Value = Me.txtZollplombe.Value
ActiveSheet.Cells(last, 13).Value = Me.txtSchiff.Value
ActiveSheet.Cells(last, 14).Value = Me.txtEta.Value
ActiveSheet.Cells(last, 15).Value = Me.txtStatus.Value
ActiveSheet.Cells(last, 16).Value = Me.txtW_Container.Value
ActiveSheet.Cells(last, 17).Value = Me.txtInfo.Value
ActiveSheet.Cells(last, 18).Value = Me.txtVersandstatus.Value
End If

Dieser müsste eventuell als Schleife sein, das erkannt wird, das bei Eingabe 10 Container auch 10 weitere Zeilen angelegt werden.
Die Auftragsnummer müssten dann in den Zeilen vortlaufend sein.

Bsp.:   Hauptnummer 12345 (weitere Contauner 10) also 10 weitere Zeilen mit der Auftragsnummer 12345-1 bis 12345-10.
Alle Daten werden aus der Hauptnummer in alle weiteren Zeilen geschrieben.
Hallo,

Code:
Sub aaa()
  Dim i As Long
  Dim last As Long
  last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile
  For i = 1 To txtW_Container
    last = last + 1
    ActiveSheet.Cells(last, 3).Value = Me.txtDatum.Value
    ActiveSheet.Cells(last, 4).Value = Me.txtAuftragsnummer.Value & "-" & i
    ActiveSheet.Cells(last, 5).Value = Me.txtDestination.Value
    ActiveSheet.Cells(last, 6).Value = Me.txtProdukt.Value
    ActiveSheet.Cells(last, 7).Value = Me.txtMenge.Value
    ActiveSheet.Cells(last, 8).Value = Me.txtCharge.Value
    ActiveSheet.Cells(last, 9).Value = Me.txtFremd.Value
    ActiveSheet.Cells(last, 10).Value = Me.txtContainer.Value
    ActiveSheet.Cells(last, 11).Value = Me.txtPlombennummer.Value
    ActiveSheet.Cells(last, 12).Value = Me.txtZollplombe.Value
    ActiveSheet.Cells(last, 13).Value = Me.txtSchiff.Value
    ActiveSheet.Cells(last, 14).Value = Me.txtEta.Value
    ActiveSheet.Cells(last, 15).Value = Me.txtStatus.Value
    ActiveSheet.Cells(last, 16).Value = Me.txtW_Container.Value
    ActiveSheet.Cells(last, 17).Value = Me.txtInfo.Value
    ActiveSheet.Cells(last, 18).Value = Me.txtVersandstatus.Value
  End If
End Sub

Gruß, Uwe
Next statt End If

Funktioniert perfekt!
Vielen Dank für die Hilfe!