2016-11-18 7 views
0

複数のデータベース(テーブル)を別々のブックで使用しており、各テーブルごとに複数の特定の列を1つのシートにコピーする必要があります。また、各列は、受信者/マスターワークシートの特定の列に貼り付ける必要があります。私はマクロで新しいので、私は自分のコードをステップバイステップで書いています。知っている限り、私はコードを1つのテーブルの列をコピーして、マスターテーブルに貼り付けます。しかし、列は3回、前の列の下の同じ列にコピーされています。なぜかわかりません。私は一度、一度コピーされた列を必要とします。ループコピーからコピー貼り付けの列を複数回コピーする

次は、私はあなたのファイルの構造や内容を知らないコード

Dim f As Range, WB As Workbook 
Dim arrSht, Arrcol As Variant, j As Long 

arrSht = Array("a","b","c") 
Arrcol = Array(5, 6, 8) 

Set WB = Workbooks.Open(Filename:= _ 
    "C:\Users\gustavo\Documents\Minambiente\TUA\2015\CARDER\CARDER.xls") 

With Application 
    .ScreenUpdating = False 
    .DisplayAlerts = False 
End With 

For j = LBound(arrSht) To UBound(arrSht) 

    Set f = WB.Sheets(1).Cells.Find(arrSht(j), searchorder:=xlByRows, LookAt:=xlPart) 

If Not f Is Nothing Then 
    WB.Sheets(1).Range(f.Offset(1, 0), Sheets(1).Cells(Rows.Count, f.Column).End(xlUp)).Copy 
     ThisWorkbook.Sheets(1).Cells(Rows.Count, Arrcol(j)).End(xlUp).Offset(1, 0).PasteSpecial 
     Else 
     MsgBox arrSht(j) & "Header not found!" 
End If 

    With Application 
    .ScreenUpdating = False 
    .DisplayAlerts = False 
    End With 
Next j  

答えて

0

です。しかし、あなたの問題はLookAt:= xlPartの使用から来ているようです。最初の反復の間に、探索範囲内のセルの一つが、「A」が含まれている場合ので、その後、

If Not f Is Nothing Then 

がチェックされます。 とセルの一つが、文字「b」を含んでいる場合には、第2の反復中、

If Not f Is Nothing Then 

条件がチェックされます。その上 そして... は、使用してみてください:これは助けることができる

LookAt: = xlWhole. 

希望。

+0

ありがとう!私はもう一度チェックし、それは初心者の間違いだった。私はコードを3回実行しました:P –

0

申し訳ありませんが、コードをもう一度確認しましたが、これは初心者の間違いでした。コードを3回実行しました:P

関連する問題