2016-06-13 72 views
0

這對您來說可能太簡單了,但我是vba的新手。我有以下代碼;當我的主文件打開時它會打開多個文件。複製並粘貼某一行的特定值

Dim StrFile As String 
Dim WB As Workbook 
    Dim InputFilePath As String 
InputFilePath = "Z:\1000_Entwicklung\05_PROJECT\0558000_CFT \055800L_CFT_Projektleitung\99_Arbeitsordner PL\Tanverdi, Yigit\SAA\" 
StrFile = Dir(InputFilePath & "*") 

Do While Len(StrFile) > 0 
    Set WB = Workbooks.Open(InputFilePath & StrFile) 
    WB.Activate 
     sheets("data").Select 
     sheets("data").Move After:=Workbooks("makrotochange.xlsm").sheets(23) 
     StrFile = Dir() 
Loop 

    Dim copiedSheet As Worksheet 
    Dim masterSheet As Worksheet 

Set copiedSheet = Worksheets("data") 
Set masterSheet= Worksheets("masterSheet") 

我想複製單元格列A; B; C; D從數據表中的每一行開始,然後將其粘貼到主表第一個空行,到列D; C;一個; B(單元格A將粘貼到masterSheet中的單元格D,B到C,C到C和D到B等)。

行數量是動態的,所以我希望能夠複製copySheet包含的任何行的A; B; C; D並將其粘貼到masterSheets D; C; A; B單元格的第一個空行。

有誰知道我該怎麼做?

編輯: 我想有一個copiedSheet2應該操作相同的東西,但它應該粘貼目的地(masterSheet)到下一個空行?

回答

1

這應該是你在追求什麼。這是將數據從一個位置複製到另一個位置而不使用任何.Select的最乾淨的方法

copiedSheet.Range("A:A").Copy Destination:= masterSheet.Range("D:D") 
copiedSheet.Range("B:B").Copy Destination:= masterSheet.Range("C:C") 
copiedSheet.Range("C:C").Copy Destination:= masterSheet.Range("A:A") 
copiedSheet.Range("D:D").Copy Destination:= masterSheet.Range("B:B") 
+0

非常感謝!我還有一個問題,如果我想擁有一個應該操作相同內容的copiedSheet2,但它應該將目標(masterSheet)粘貼到下一個空行? –

+0

@BartuSaner如果答案是正確的,那麼請[接受答案](http://stackoverflow.com/tour),並(可能)提高答案。如果你有新的問題,那麼你應該發佈一個新的問題。如果你認爲這樣的參考是有價值的,你可以(當然)在你的新問題中鏈接到這篇文章。順便說一句:*(+ 1)*從我這邊發帖。 – Ralph