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
InformationsquelleAutor ProjectPokket | 2013-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen einfach nur shift alles, was Sie verwenden können:
Ähnlich wie shift alles über:
zdfind1.Offset(1).Rows(1).Insert shift:=xlDown
das ist eine Arbeit finden, die Verschiebung nach rechts ist wie folgtdfind1.Offset(0, 0).Columns(1).Insert shift:=xlShiftRight
Würde ich entfernen Sie Ihre dfind1.offset(0,0). Wenn Sie möchten, dass eine ganze Spalte eingefügt. Verwenden Sie einfach die Spalten(1).Teil einfügen
alrighty werden, ich bin cool mit diesem. Danke!!!
Hinweis: Sie können die insert-mehrere Zeilen/Spalten in einem Schritt ohne Schleife durch die Eingabe des Bereichs in der
Rows
oderColumns
- z.B.Columns("B:F").Insert Shift:=xlToRight
Sie sind herzlich willkommen! Viel Glück.
InformationsquelleAutor Gaussian Blur