EXCEL VBA einfügen von leeren Zeilen und Zellen verschieben

Ich habe Probleme bei der Eingabe eine ganze leere Zeile. Ich bin versucht zu verschieben Spalten A-AD (vier Spalten, die Vergangenheit Z).

Derzeit Zellen A-O hat Inhalt. Zellen O-AD leer sind. Aber ich bin mit einem makro-Daten nach rechts werden die aktuellen Daten (Spalte O).

Kann ich eine Zeile einfügen mit

dfind1.Offset(1).EntireRow.Insert shift:=xlDown

aber es scheint nur das zurückschalten von A-O. ich habe zu verwalten, zu verschieben down-O-AD mit einer for-Schleife

dfind1 as Range
For d = 1 To 15
    dfind1.Offset(2, (d + 14)).Insert shift:=xlDown
Next d

Ist es eine Verschiebung nach unten 30 Zellen VS 15? Außerdem möchte ich das shift-15 auf die Zellen in die richtige. Derzeit habe ich noch eine for-Schleife setup.

Als für den rest der code, den Ihr unten. Grundsätzlich ist das Zusammenführen von zwei excel-sheets Grundlagen auf der Suche nach einer übereinstimmung in der Spalte A. ich habe markiert das problem. Der rest des Codes funktioniert zum größten Teil.

Sub combiner()

    Dim c As Range, d As Long, cfind As Range, x, y, zed, dest As Range, cfind1 As Range, dfind As Range, _
    dfind1 As Range, crow, x_temp, y_temp

    On Error Resume Next
    Worksheets("sheet3").Cells.Clear
    With Worksheets("sheet1")
    .UsedRange.Copy Worksheets("sheet3").Range("a1")
    End With

    With Worksheets("sheet2")
    For Each c In Range(.Range("a3"), .Range("a3").End(xlDown))
    x = c.Value
    y = c.Next

    Set cfind = .Cells.Find(what:=y, lookat:=xlWhole)
    .Range(cfind.Offset(0, -1), cfind.End(xlToRight)).Copy

        With Worksheets("sheet3")
            Set dfind1 = .Cells.Find(what:=x, lookat:=xlWhole)
            If dfind1 Is Nothing Then GoTo copyrev

            '**************************************************************
            '**************************************************************
            'This is the problem Area
            'I'm basically having trouble inserting a blank row
            dfind1.Offset(1).EntireRow.Insert shift:=xlDown



            For d = 1 To 15
                dfind1.Offset(1).Insert shift:=xlToRight
            Next d

            For d = 1 To 15
                dfind1.Offset(2, (d + 14)).Insert shift:=xlDown
            Next d
            '**************************************************************
            '**************************************************************


        End With 'sheet3
        GoTo nextstep

    copyrev:
        With Worksheets("sheet3")
            x_temp = .Cells(Rows.Count, "A").End(xlUp).Row
            y_temp = .Cells(Rows.Count, "P").End(xlUp).Row
            If y_temp > x_temp Then GoTo lr_ed
            lMaxRows = x_temp
            GoTo lrcont
    lr_ed:
            lMaxRows = y_temp
    lrcont:
            .Range(("P" & lMaxRows + 1)).PasteSpecial
            Worksheets("sheet2").Range(cfind.Offset(0, -1), cfind.Offset(0, 0)).Copy
            .Range(("A" & lMaxRows + 1)).PasteSpecial
        End With 'sheet3


    nextstep:
    Next


    lngLast = Range("A" & Rows.Count).End(xlUp).Row

    With Worksheets("Sheet3").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A1:A2" & lngLast), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("B3:Z" & lngLast)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With


    End With  'sheet2
        Application.CutCopyMode = False
End Sub
Wenn diese Frage waren viel, viel kürzer, es könnte unter Umständen von nutzen sein für andere Benutzer. So wie es da steht, ich glaube nicht, dass es ist.

InformationsquelleAutor ProjectPokket | 2013-04-04

Schreibe einen Kommentar