Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1824to1828
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
Inhaltsverzeichnis

Makro Zeilen hinzufügen und Werte kopier

Makro Zeilen hinzufügen und Werte kopier
21.04.2021 11:38:46
Dyma
Hallo zusammen,
ich habe folgendes Problem und würde es gern über ein Makro lösen.
In Spalte M, stehen in jeder Zeile eine Zahl, diese gibt an wie viele Zeilen unterhalb eingefügt werden sollen.
Die Bezeichnung aus dieser Zeile A bis K, soll dann in diese leeren kopiert werden.
Wenn das funktioniert wäre es erstmal Klasse.
Perfekt wäre es, wenn aus Spalte L die eingetragen Werte bei "//" getrennt werden und in die eingefügten Zeilen nach der Reihe übertragen werden. Das könnte ich jedoch auch manuell lösen, falls es dazu keine Makrolösung gibt.
Vielen Dank für die Hilfe
https://www.herber.de/bbs/user/145687.xlsx

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Zeilen hinzufügen und Werte kopier
21.04.2021 15:08:10
worti
Hallo Dyma,
meinst du das so:

Sub Dyma()
Dim lngZeile As Long
Dim ws As Worksheet
Dim intZahlausM As Integer
Dim intZaehler As Integer
Dim myArray
Set ws = ThisWorkbook.Worksheets("Tabelle1")
lngZeile = 2
intZahlausM = ws.Cells(lngZeile, 13).Value
Do While Not IsEmpty(ws.Cells(lngZeile, 1).Value)
ws.Range("A" & lngZeile + 1 & ":A" & lngZeile + intZahlausM).EntireRow.Insert Shift:=xlShiftDown
ws.Range("A" & lngZeile & ":K" & lngZeile).Copy Destination:=ws.Range("A" & lngZeile + 1 & ":A" & lngZeile +  _
intZahlausM)
myArray = Split(ws.Cells(lngZeile, 12), "//")
For intZaehler = 0 To intZahlausM
Cells(lngZeile + intZaehler, 12).Value = myArray(intZaehler)
Next
lngZeile = lngZeile + intZahlausM + 1
intZahlausM = ws.Cells(lngZeile, 13).Value
Loop
Set ws = Nothing
End Sub
Gruß Worti
Anzeige
AW: Makro Zeilen hinzufügen und Werte kopier
22.04.2021 07:31:15
Dyma
Hallo Worti,
Super, das funktioniert perfekt! Vielen Dank!
LG Dyma
AW: Makro Zeilen hinzufügen und Werte kopier
22.04.2021 11:22:45
Dyma
Hallo Worti,
Leider funktioniert es doch noch nicht ganz.
Wenn in Spalte M der Wert 0 steht, dann soll er diese Zeile überspringen und nichts tun. Aktuell geht das Makro an solch einer Stelle auf Fehler, da in Spalte L nur ein Wert steht . Das kommt in der Datei allerdings auch oft vor, da an dieser Stelle keine Bearbeitung notwendig ist. Daher sind dort auch keine "//" vorhanden.
Vielen Dank vorab!
LG Dyma
AW: Makro Zeilen hinzufügen und Werte kopier
22.04.2021 19:01:06
Yal
Hallo Dyma,
@Worti: ich bin so frech und übernehme deine gute Vorlage.

Sub Dyma()
Dim ws As Worksheet
Dim r
Dim AnzahlNeueZeile
Dim Arr
Set ws = ThisWorkbook.Worksheets("Tabelle1")
For r = ws.Range("A9999").End(xlUp).Row To 2 Step -1
AnzahlNeueZeile = ws.Cells(r, "M").Value
If AnzahlNeueZeile > 0 Then
ws.Cells(r + 1, 1).Resize(AnzahlNeueZeile, 1).EntireRow.Insert Shift:=xlShiftDown
ws.Cells(r, 1).Resize(1, 11).Copy Destination:=ws.Cells(r + 1, 1).Resize(AnzahlNeueZeile, 11)
Arr = Split(ws.Cells(r, 12), "//")
If UBound0(Arr) > -1 Then ws.Cells(r + 1, 12).Resize(AnzahlNeueZeile, UBound(Arr) + 1) = Arr
End If
Next
Set ws = Nothing
End Sub
Private Function UBound0(Arr)
'Gibt -1 zurück, wenn der array nicht dimensioniert ist.
On Error Resume Next
UBound0 = -1
UBound0 = UBound(Arr)
End Function

Ein Vorhaben, der Zeilen einfügt oder löscht, sollte "von hinten" laufen, also von unten nach oben oder von rechts nach links. Daher Step -1.
Die Function UBound0 hat den zweck zu prüfen, ob eine Array vorliegt. Bei nicht Vorhandensein entsteht einen Fehler. Die vorige Wert bleibt ("On Error Resume Next"). Es ist leichter, diesen Trick in einer separaten Funktion zu verwenden.
VG
Yal
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige