2017-07-28 4 views
0

Entschuldigung, wenn dies wie ein Duplikat erscheinen mag, aber ich suche nach einer spezifischen Lösung für vielleicht ein häufiges Problem.Hinzufügen von Spalte aus einem Bereich von Zellen

Ich habe den folgenden Code, um Zeilen aus einer Reihe von Zellen hinzuzufügen:

enter image description here

Sub Insert_Matrix_Rows() 
    Dim Lr As Integer, Fr As Integer 

    Fr = Columns("B").Find(What:="User R", After:=Range("B9")).Row 'Searching row of "User R" header 
    Lr = Range("B" & Fr).End(xlDown).Row 'Searching last row in Risk table 

    Rows(Lr + 1).Insert Shift:=xlDown 'Inserting new row 
    'Cells(Lr + 1, "B") = Cells(Lr, "B") + 1 'Adding a sequential number 
    Rows(Lr).Copy 'Copying format of last row 
    Rows(Lr + 1).PasteSpecial Paste:=xlPasteFormats 'Pasting format to new row 
    Application.CutCopyMode = False 'Deactivating copy mode 
    Cells(Lr + 1, "C").Select 
End Sub 

ich es als ein Makro zuweisen und es funktioniert die Zeile 9, kopieren und unter dem Einfügen Reihe. Im Wesentlichen möchte ich diesen Prozess stattdessen für Spalten kopieren. So werden alle Zeilen, die durch den obigen Code erzeugt werden könnten, beim Erstellen von Spalten eingeschlossen und umgekehrt.

Ich habe versucht, den Code zu tun übersetzen für Spalten zu arbeiten, aber ich laufe in Fehler (Type Mismatch):

Sub Insert_Matrix_Columns() 
    Dim Lc As Integer, Fc As Integer 

    Fc = Columns("D").Find(What:="User C", After:=Range("E6")).Column 'Searching row of "User C" header 
    Lc = Range("E" & Fr).End(xlRight).Column 'Searching last row in Risk table 

    Columns(Lc + 1).Insert Shift:=xlRight 'Inserting new row 
    'Cells(Lr + 1, "B") = Cells(Lr, "B") + 1 'Adding a sequential number 
    Columns(Lc).Copy 'Copying format of last row 
    Columns(Lc + 1).PasteSpecial Paste:=xlPasteFormats 'Pasting format to new row 
    Application.CutCopyMode = False 'Deactivating copy mode 
    Cells(Lc + 1, "E").Select 
End Sub 
+0

auf dem der Fehler Leitung auftritt? – avb

+0

Der Fehler tritt auf: Sub Insert_Matrix_Columns(), die Zeile, die enthält „Fc - ...“ – Idrawthings

+0

o denken somehing fehlt in Ihrem Kommentar – avb

Antwort

0

ersetzen
Fc = Columns("D").Find(What:="User C", After:=Range("E6")).Column 

mit

Fc = Rows(6).Find(What:="User C", After:=Range("E6")).Column 

EDIT: hier funktioniert Code (I Verwendung reproduziert Tabelle):

Sub Insert_Matrix_Columns() 
    Dim lastCol As Range 

    Set lastCol = Rows(6).Find(What:="User C").End(xlToRight).EntireColumn 

    Columns(lastCol.Column + 1).Insert Shift:=xlShiftToRight 
    lastCol.Copy 
    Columns(lastCol.Column + 1).PasteSpecial Paste:=xlPasteFormats 

    Application.CutCopyMode = False 
End Sub 

Hauptproblem mit Ihrem Code wurde mit xlRight statt xlShiftToRight und xlToRight die jeweils -4152 sind, -4161, -4161

+0

Ich bekomme den Fehler "400" dafür. – Idrawthings

+0

Ich habe versucht zu debuggen, der Fehler ist nicht in der Zeile: "Lc = ...", bemerkte ich den Tippfehler von Fr, ich habe das in Fc geändert, obwohl ich immer noch einen Fehler: "Anwendungsdefiniert oder objektdefiniert Fehler " – Idrawthings

+0

avb, wenn Sie versuchen, die Tabelle zu reproduzieren, können Sie möglicherweise das Problem sehen, dass ich begegne. – Idrawthings

Verwandte Themen