2017-07-11 6 views
1

したがって、2枚のシートがあります。 1つは行1(Sheet1)のヘッダーでデータがいっぱいで、もう1つは行9(Sheet2)にヘッダーがあります。私は、特定のヘッダーでSheet1からデータをコピーし、対応するヘッダーでSheet2に配置する必要があります。たとえば、Sheet1のヘッダーが "bob"の場合、 "bob"で始まる列のすべてのデータをコピーし、Sheet2のハードコードされた列に配置します。VBA:Range.Copyで列の一部をコピーする

私のコードは現在、Sheet1のヘッダーをフィルタリングし、別のシートにコピーする必要があるコードを選択すると、の列全体をコピーして、列IのSheet2に貼り付けます。この列は常に同じですが、情報をI1ではなくI9に貼り付けることができます。私はいくつかの変更を助けたいくつかのコードをオンラインで見つけました。

しかし、私はペーストしようとすると列全体をコピーするとエラー1004が発生するため、これを行うことはできません。したがって、I1に貼り付けることしかできません。そうしないとオーバーフローが発生します。どのようにして、コピーメソッドを変更して、ヘッダー "ボブ"が塗りつぶされた列のセルだけがコピーされ、ペーストされるようにすることができますか?

コードは以下の通りです:

Dim ws As Worksheet 
Dim aCell As Range, Rng As Range 
Dim col As Long, lRow As Long 
Dim colName As String 
Dim i As Integer 

'activate temp worksheet 
Set ws = ThisWorkbook.Sheets("Sheet1") 
Set res = ThisWorkbook.Sheets("Sheet2") 

With ws 
    Set a = .Range("A1:ZZ1").Find(What:="bob", LookIn:=xlValues, LookAt:=xlWhole, _ 
       MatchCase:=False, SearchFormat:=False) 
    'if found 
    If Not a Is Nothing Then 
     'copy column 
     a.EntireColumn.Copy 
     'insert column at I9 
     Cells("I9").PasteSpecial Paste:=xlPasteValues 
    Else 
     MsgBox "Parameter (bob) not found in (Sheet1)" 
    End If 

End With 

ありがとうございました!

+0

ちょうどそれのデータとビットをコピーして、列全体をコピーしないでください。 – SJR

答えて

1

試してみてください。

Dim ws As Worksheet 
Dim aCell As Range, Rng As Range, a As Range` 
Dim col As Long, lRow As Long 
Dim colName As String 
Dim i As Integer 


'activate temp worksheet 
Set ws = ThisWorkbook.Sheets("Sheet1") 
Set res = ThisWorkbook.Sheets("Sheet2") 

With ws 
    Set a = .Range("A1:ZZ1").Find(What:="bob", LookIn:=xlValues, LookAt:=xlWhole, _ 
       MatchCase:=False, SearchFormat:=False) 
    'if found 
    If Not a Is Nothing Then 
     'copy column 
     lRow = .Cells(.Rows.Count, a.Column).End(xlUp).Row 
     .Range(.Cells(1, a.Column), .Cells(lRow, a.Column)).Copy 
     'insert column at I9 
     res.Range("I9").PasteSpecial Paste:=xlPasteValues 
    Else 
     MsgBox "Parameter (bob) not found in (Sheet1)" 
    End If 

End With 
+0

"res.Cells(" I9 ")という行にランタイムエラー5があります。PasteSpecial Paste:= xlPasteValues"私はそれが "細胞"が好きだとは思わない。あなたはそれを修正する方法を知っていますか?これは私が得ることができたよりも遠い、ありがとう! –

+0

'Cells'の代わりに' Range'を使用してください – UGP

+0

これは完璧に機能します。あなたは魔術師です。どうもありがとうございます。 –

関連する問題