2017-08-31 3 views
0

Ich habe eine Arbeitsmappe mit 3 Blatt. Ich möchte eine Spalte von Blatt1 nach Blatt3 kopieren, indem ich den in A1, B1 und C1 zugewiesenen Spaltennamen verwende. Ich kann den Inhalt kopieren, indem ich Bereich benutze. Aber ich konnte keine Möglichkeit finden, mit dem Spaltennamen wie "Name" oder "Alter" zu kopieren. Ich habe den folgenden Code auf einer Seite gefunden, der den Fehler '1004' anzeigt. Methode 'Range' des Objekts '_Worksheet' ist fehlgeschlagen.Kopieren Spalte nach Spalte Name

Range("P").Value = 15 . 

Ich bin sehr neu auf Excel und VBA. TIA

+2

Mögliches Duplikat von [Excel VBA: Können wir eine Spalte nach ihrem Namen verweisen?] (Https://stackoverflow.com/questions/30633763/excel-vba-can-we-refer-a-column-by-its -name) – MatSnow

+0

Excel lässt dieses Verhalten nicht zu. Am nächsten kommt es, wenn Sie einer Übung folgen, die im @ MatSnow-Kommentar empfohlen wird. – Stewbob

Antwort

0

Ich bin nicht ganz sicher, was genau Sie versuchen zu tun, da Ihr Code für den Bereich ("P") keinen Sinn macht, da Sie nur eine Hälfte eines Zellbereichs definiert haben. Aber meine beste Schätzung ist, dass Sie versuchen, eine ganze Spalte basierend auf der Kopfzeile einer Tabelle zu kopieren (wie Sie es in A1, B1 und C1 genannt haben)?

Wenn dies der Fall ist, durchläuft dieses Schnellmakro jeden Header, wie in HeaderRange definiert, und kopiert ihn, wenn er mit Ihrer Abfrage übereinstimmt, in Zelle A1 in Blatt3.

Sub CopyCol() 
Dim HeaderRange As Range 
Dim Query As String 

Set HeaderRange = Worksheets("Sheet1").Range("A1:C1") 
Query = "Name" 

For Each hcell In HeaderRange ' Loop through each header cell 
    If hcell.Value = Query Then ' If it matches your query then copy entire column 
     Range(hcell.Address).EntireColumn.Copy _ 
     Destination:=Sheets("Sheet3").Range("A1") 
    End If 
Next hcell 

End Sub 

Hoffentlich ist dies ein guter Ausgangspunkt für Sie.