2017-07-23 17 views
1

Ich bin neu in Makro Excel-Funktionen und ich versuche, eine Zeile einzufügen, wenn eine Änderung in den Zellwert einer bestimmten Spalte ist. Zum BeispielZeile einfügen basierend auf Zellenwert

row_no  B  
 
1   p 
 
2   p 
 
3   p 
 
4   q 
 
5   q 
 
6   q 
 
7   q

Eine Reihe soll 1 wird geändert in Zeile 3, wenn der Wert in der Spalte eingefügt werden. Hast du eine Idee?

Momentan ist dies mein Code.

Sub MySub() 
 
    Do While B1 <> B2 
 
    CurrentSheet.Range("a1:i1").EntireRow.Insert 
 
    Loop 
 
    End Sub

Es ist immer noch nicht funktioniert, gehen alle von Ihnen haben eine Idee, warum?

+0

Erfahren h Schreiben von Schleifen in VBA und Schleifen von Zellbereichen. Google auch, wie man eine Reihe mit VBA einfügt. Viel Glück. –

+0

@AndreTerra Hallo, Ich habe versucht, Schleifen und es gibt keinen Fehler nach dem Ausführen des oben editierten Code in Excel, aber es funktioniert immer noch nicht, weißt du warum? – Faheera

Antwort

1

diesen Code Versuchen:

Sub Demo() 
    Dim ws As Worksheet 
    Dim lastRow As Long, i As Long 

    Set ws = ThisWorkbook.Sheets("Sheet1") 'set you data sheet here 
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row 'get the last row in column A 
    For i = lastRow To 2 Step -1 'loop from last row to row 2 
     If ws.Range("A" & i) <> ws.Range("A" & i - 1) Then 'compare value if not same 
      ws.Range("A" & i).EntireRow.Insert 'if value are not same insert row 
     End If 
    Next i 
End Sub 
+0

Hallo, vielen Dank, das funktioniert für mich! – Faheera

+0

Nur eine weitere Frage, wenn eine Zeile eingefügt wird, haben Sie eine Idee, wie einige Zellen des Eingefügten den Wert 0 haben? – Faheera

+0

@Faheera - Etwas wie 'ws.Range (" col_name "& i +1)' sollte funktionieren, hängt jedoch davon ab, was genau Sie versuchen zu tun. – Mrig

0

Fügen Sie den folgenden in Ihre Sheet1 (Sheet1) VBA-Modul (oder das Modul, das auf dem Arbeitsblatt bezieht wollen Sie diese Funktionalität in)

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    Application.EnableEvents = False 
    If Target.Column = 1 Then Rows(Target.Row + 1).EntireRow.Insert 
    Application.EnableEvents = True 
End Sub 

Diese eine Zeile unterhalb der veränderten Zelle einfügt, wenn die Zelle Spaltennummer ist Spalte 1 oder A

Verwandte Themen