HERBERS Excel-Forum - das Archiv
Makro Zeile einfügen Wenn 2.
Peter

Hallo ich wieder,
alles so weit, so gut. leider kann ich meinen alten Beitrag nicht mehr editieren. Daher noch die Frage zum alten Thema:
Mit dem Code kann ich eine Leere Spalte einfügen wenn sich die Zahl in Spalte A ändert:

Sub ZeileEinfügenBeiZahlÄnderung()
'--- geprüft wird spalte A
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1)
.Cells(1, 1).Value = 1
.Offset(1, 0).Resize(.Rows.Count - 1, 1).FormulaR1C1 = "=R[-1]C+(RC1<>R[-1]C1)"
.Formula = .Value
.Copy
.Offset(.Rows.Count).PasteSpecial xlPasteValues
Selection.RemoveDuplicates 1, xlNo
.CurrentRegion.EntireRow.Sort Key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
.EntireColumn.ClearContents
End With
End With

Was muss ich Ändern damit die Suche in E2 anfängt?
LG

AW: Makro Zeile einfügen Wenn 2.
Jürgen

Hallo Peter,
du meinst, dass die zu suchenden Nummern in der Spalte A stehen, aber erste in Spalte e die Hilfsspalte kommt, da BCD gefüllt sind?
Dann musst du hier einiges Ändern. Z.B. auch die Formel "R[-1]...".
Das scheint mir sehr umständlich zu sein.
Suche doch direkt die Unterschiede und füge eine Zeile ein.
Sub Zeilen_einfügen()
Dim lngMaxrow As Long, lngRowSuche As Long
Dim strColsuche As String
lngRowSuche = 3 'Das Feld mit der zweiten Nummer
lngMaxrow = ActiveSheet.UsedRange.Rows.Count
strColsuche = "A"  'Die Spalte in der du suchst.
While lngRowSuche < lngMaxrow
If Range(strColsuche & lngRowSuche).Value = Range(strColsuche & lngRowSuche - 1).Value _
Or Range(strColsuche & lngRowSuche - 1).Value = "" Then
Else
Rows(lngRowSuche).Insert shift:=xlDown
lngMaxrow = lngMaxrow + 1
End If
lngRowSuche = lngRowSuche + 1
Wend
End Sub
Wenn du nun die Werte in Spalte c hast musst du nur strColsuche anpassen.
Oder wenn die Werte wegen einer Kopfzeile erst in Zeile 6 beginnen, einfach die lngRowSuche erhöhen.
Dabei aber immer die zweite Wertzeile angeben, da ansonsten direkt nach einer Spaltenüberschrift eine Leerzeile eingefügt würde.
Gruß
Jürgen

AW: Makro Zeile einfügen Wenn 2.
Peter

Zelle a1 bis J1000 sind mit Daten voll. Jedoch ist in Spalte E der Auslöser der Aktion, da sich hier alle paar Zeilen die Nummer ändert. Zu suchen soll er jedoch erst in Zelle E2 beginnen.
Ändert sich nun der Wert der Zahl in Spalte E soll eine leere Zeile eingefügt werden.
Probier deine Variante gleich mal aus.
LG

Makro Zeile einfügen Wenn 2.
Peter

Hallo ich wieder,
alles so weit, so gut. leider kann ich meinen alten Beitrag nicht mehr editieren. Daher noch die Frage zum alten Thema:
Mit dem Code kann ich eine Leere Spalte einfügen wenn sich die Zahl in Spalte A ändert:

Sub ZeileEinfügenBeiZahlÄnderung()
'--- geprüft wird spalte A
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1)
.Cells(1, 1).Value = 1
.Offset(1, 0).Resize(.Rows.Count - 1, 1).FormulaR1C1 = "=R[-1]C+(RC1<>R[-1]C1)"
.Formula = .Value
.Copy
.Offset(.Rows.Count).PasteSpecial xlPasteValues
Selection.RemoveDuplicates 1, xlNo
.CurrentRegion.EntireRow.Sort Key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
.EntireColumn.ClearContents
End With
End With

Was muss ich Ändern damit die Suche in E2 anfängt?
LG

AW: Makro Zeile einfügen Wenn 2.
Jürgen

Hallo Peter,
du meinst, dass die zu suchenden Nummern in der Spalte A stehen, aber erste in Spalte e die Hilfsspalte kommt, da BCD gefüllt sind?
Dann musst du hier einiges Ändern. Z.B. auch die Formel "R[-1]...".
Das scheint mir sehr umständlich zu sein.
Suche doch direkt die Unterschiede und füge eine Zeile ein.
Sub Zeilen_einfügen()
Dim lngMaxrow As Long, lngRowSuche As Long
Dim strColsuche As String
lngRowSuche = 3 'Das Feld mit der zweiten Nummer
lngMaxrow = ActiveSheet.UsedRange.Rows.Count
strColsuche = "A"  'Die Spalte in der du suchst.
While lngRowSuche < lngMaxrow
If Range(strColsuche & lngRowSuche).Value = Range(strColsuche & lngRowSuche - 1).Value _
Or Range(strColsuche & lngRowSuche - 1).Value = "" Then
Else
Rows(lngRowSuche).Insert shift:=xlDown
lngMaxrow = lngMaxrow + 1
End If
lngRowSuche = lngRowSuche + 1
Wend
End Sub
Wenn du nun die Werte in Spalte c hast musst du nur strColsuche anpassen.
Oder wenn die Werte wegen einer Kopfzeile erst in Zeile 6 beginnen, einfach die lngRowSuche erhöhen.
Dabei aber immer die zweite Wertzeile angeben, da ansonsten direkt nach einer Spaltenüberschrift eine Leerzeile eingefügt würde.
Gruß
Jürgen

AW: Makro Zeile einfügen Wenn 2.
Peter

Zelle a1 bis J1000 sind mit Daten voll. Jedoch ist in Spalte E der Auslöser der Aktion, da sich hier alle paar Zeilen die Nummer ändert. Zu suchen soll er jedoch erst in Zelle E2 beginnen.
Ändert sich nun der Wert der Zahl in Spalte E soll eine leere Zeile eingefügt werden.
Probier deine Variante gleich mal aus.
LG

Bewerten Sie hier bitte das Excel-Portal