Wie einige der Mitglieder bin ich neu, dennoch habe ich in den Themen nichts passendes gefunden zu meiner Frage: Ich möchte eine Bestell-Gravur-Liste erstellen, welche automatisch Zeilen widergibt.
z.Bsp.: Aus Tabelle 1 Zeile D5:D1200 soll sobald eine Zahl X (z.Bsp. 2) steht, der Name aus B (UV -1.01) & "Abstand" & C (5F3) in Tabelle 2 spalte A kopiert werden. und das so oft wie die Zahl X. also: Tab. 2/Zeile A1: UV -1.01 5F3 Tab. 2/Zeile A2: UV -1.01 5F3 usw.
Leider habe ich es mit kopieren und anpassen von online gefundenen Makros nicht hinbekommen.
so eine Funktion müsste doch nicht allzu schwer sein, leider weiss ich dann nicht ganz wo ich welche Daten ändern muss um auf meine Tabelle anzugleichen.
Kann da jemand helfen? Oder ev. sagen wie ich das ändern könnte: Sub Erweitern()
Dim lRow As Long Dim lCnt As Long, lCntTop As Long Application.ScreenUpdating = False With ActiveSheet For lRow = .Range("B" & .Rows.Count).End(xlUp).Row To 2 Step -1 If IsNumeric(.Cells(lRow, 2)) Then lCntTop = .Cells(lRow, 2) .Cells(lRow, 2) = 1 For lCnt = lCntTop To 2 Step -1 .Rows(lRow).Insert .Rows(lRow + 1).Copy Destination:=Cells(lRow, 1) Next lCnt End If Next lRow End With Application.ScreenUpdating = True End Sub
wenn Du den Text in der Zelle D5 entfernst, kannst Du es mal so versuchen.
Code:
Sub Erweitern()
Dim lRow As Long Dim lCnt As Long Application.ScreenUpdating = False With Worksheets("Tabelle1") lCnt = 1 For lRow = 5 To .Range("B" & .Rows.Count).End(xlUp).Row If .Cells(lRow, 4) > 0 Then Worksheets("Tabelle2").Cells(lCnt, 1).Resize(.Cells(lRow, 4).Value) = .Cells(lRow, 2).Value & " " & .Cells(lRow, 3).Value lCnt = lCnt + .Cells(lRow, 4).Value End If Next lRow End With Application.ScreenUpdating = True End Sub
Super vielen Dank... :19: Funktioniert... :15: mit Copy-Paste sogar weitere Reihen auf andere Blätter und Reihen. Hab noch nicht raus gefunden wie ich die ersten beiden Zeilen Leer lassen kann (für überschriften oder so) und wie ich eine autoAktualisierung miteinbaue (wenn anpassung automatisch die die es nicht mehr hat löscht), aber von Hand löschen und erneut laufen lassen geht auch. Vieleicht finde ich noch was im Forum.
(21.10.2015, 09:35)eeree13 schrieb: Hab noch nicht raus gefunden wie ich die ersten beiden Zeilen Leer lassen kann (für überschriften oder so)
die Startzeile habe ich hier
Code:
lCnt = 1
festgelegt. Zahl einfach ändern
(21.10.2015, 09:35)eeree13 schrieb: .... und wie ich eine autoAktualisierung miteinbaue (wenn anpassung automatisch die die es nicht mehr hat löscht),
das heißt, Du gibst (änderst oder löschst) in der Spalte D eine Zahl ein und Excel so automatisch den Eintrag in der Spalte A der Tabelle2 einfügen, ändern oder löschen?
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • eeree13
(21.10.2015, 19:25)Steffl schrieb: das heißt, Du gibst (änderst oder löschst) in der Spalte D eine Zahl ein und Excel so automatisch den Eintrag in der Spalte A der Tabelle2 einfügen, ändern oder löschen?
Servus
Das mit der Startzeile hat geklappt... danke
Genau, kennst du den Befehl den ich schreiben könnte, um dies gemäss deiner genaueren Beschreibung umzusetzen?
Danke dir nochmal, das ist echt beeindruckend wie einfach dir das von der Hand zu gehen scheint :35:
22.10.2015, 20:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2015, 20:32 von Steffl.
Bearbeitungsgrund: Antwort ergänzt.
)
Hallo,
versuche es mal mit dem folgenden Code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngWert As Range Dim lngZeile As Long
If Not Intersect(Target.Cells(1), Columns(4)) Is Nothing Then With Worksheets("Tabelle2") Set rngWert = .Columns(1).Find(Cells(Target.Row, 2) & " " & Cells(Target.Row, 3), lookat:=xlWhole, LookIn:=xlValues) If Not rngWert Is Nothing Then .Rows(rngWert.Row).Resize(Application.WorksheetFunction.CountIf(.Columns(1), Cells(Target.Row, 2) & " " & Cells(Target.Row, 3))).Delete End If If Not IsEmpty(Target.Cells(1)) Then lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 .Cells(lngZeile, 1).Resize(Target.Cells(1).Value) = Cells(Target.Row, 2).Value & " " & Cells(Target.Row, 3).Value End If End With End If
in deinem Tabellenblatt sind die Zellen geschützt und da ich im Code ganze Zeile(n) lösche gibt es die Fehlermeldung. Erlaube auch das Löschen von Zeilen, dann gehts.