2017-08-31 1 views
0

私は3枚のブックを持っています。私は、A1、B1とC1で割り当てられた列名を使用して、sheet1からsheet3に列をコピーしたいと思います。私は範囲を使って内容をコピーすることができます。しかし、私は "名前" "年齢"などの列名を使用してコピーする方法を見つけることができませんでした。エラー '1004'を示すサイトで次のコードが見つかりました。オブジェクト '_Worksheet'のメソッド 'Range'が失敗しました。列名で列をコピー

Range("P").Value = 15 . 

私はExcelとVBAの新機能です。 TIA

+2

[Excel VBA:列で名前を参照できますか?](https://stackoverflow.com/questions/30633763/excel-vba-can-we-refer-a-column-by-its -name) – MatSnow

+0

Excelではこの動作を許可していません。あなたが得ることができる最も近いのは、@MatSnowコメントで推奨されている方法に従うことです。 – Stewbob

答えて

0

セル範囲の半分しか定義していないので、range( "P")。valueのコードが意味をなさないので、正確に何をしようとしているのかよくわかりません。しかし、私の推測では、テーブルのヘッダーに基づいて列全体をコピーしようとしています(A1、B1、C1に割り当てられているとおっしゃいましたが)。

この場合、このクイックマクロはHeaderRangeで定義されている各ヘッダーをループし、クエリと一致する場合は、sheet3のセルA1にコピーします。

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 

これは良いスタート地点です。