2014-09-30 30 views
0

我想從Excel工作簿中存在的所有工作表中選擇特定的單元格,然後粘貼到主表單中。問題是我沒有從創建的代碼中得到這個,我得到一個錯誤,但是如果我現在就離開它(如下所示),我得到它的特定單元格,然後我必須進入代碼來更改單元格以及我想要輸出到的位置。我爲了我的天真而提前道歉。用於選擇特定單元格並相應地粘貼的VBA代碼

由於它是現在

Sub CopyIt() 
    Dim ws As Worksheet 
    Application.ScreenUpdating = False 
    For Each ws In ActiveWorkbook.Worksheets 
     If ws.Name <> "Masters" Then 
      ws.Range("B18").Copy Sheets("Masters").Cells(Rows.Count, "Q").End(xlUp).Offset(1) 
     End If 
    Next 
    Application.ScreenUpdating = True 
End Sub 

我想要這個小區範圍"B2-B18"被複制到"A:Q"和在主片。所以B2中的值轉到A列等等,然後在B18的末尾轉到Q

我爲代碼做了些什麼沒有做的事?

+0

因此,您希望工作表A中的範圍B2到B18轉到主工作表中的A1-Q1,並循環執行所有工作表,我是否正確? – pegicity 2014-09-30 19:33:49

+0

是的,你是對的。實際上A2:Q2。我正在使用Excel 2013. – Gunnerfan 2014-09-30 19:46:28

回答

0

嘗試:

ws.Range("B1:B18").Copy 
Sheets("Masters").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True 

這應該複製B1:B18,從列轉它行並粘貼在你的主人表的A列的最後一行。

+0

運行時錯誤438,對象不支持此屬性或方法。那就是我得到的。我正在使用Excel 2013 – Gunnerfan 2014-09-30 19:50:50

0

使開發人員工具欄中
選擇錄製宏
選擇B2:B18在一個頁面中,選擇另一個工作表,然後右鍵單擊粘貼特殊一切,還可以選擇調換
停止錄製宏
現在編輯宏以滿足您要求

示例宏自動生成的代碼如下

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Range("B2:B18").Select 
    Selection.Copy 
    Sheets("Sheet2").Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
     False, Transpose:=True 
End Sub 
1

嘿我只是測試這一點,它應該爲你做伎倆

Sub CopyIt() 

Dim pasteRow As Integer 
Dim ws As Worksheet 
Application.ScreenUpdating = False 

pasteRow = 2 

For Each ws In ActiveWorkbook.Worksheets 
    If ws.Name <> "Masters" Then 
     ws.Range("B2", "B18").Copy 
     Sheets("Masters").Range("A" & pasteRow).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
     False, Transpose:=True 

     pasteRow = pasteRow + 1 
    End If 

Next 

Application.ScreenUpdating = True 
End Sub 

這將推進每個工作表的行,所以你可以添加儘可能多的工作表,只要你喜歡。請注意,這實際上不是最通用的代碼,您需要將ws.Range("B2", "B18").copy更改爲選擇說的內容,即列中的所有範圍,或者您每次需要更改範圍時都必須手動擴展範圍。

0

這應該做所需... (這將複製從B2糊值:在每一片材到不同的行的表「主人」 B18細胞)

子宏1()

Dim ws As Worksheet 
Dim row_count As Integer 
row_count = 1 

For Each ws In ActiveWorkbook.Worksheets 
    MsgBox ws.name 
    If ws.name <> "Masters" Then 
     ws.Activate 
     Range("B2:B18").Select 
     Selection.Copy 
     Sheets("Masters").Activate 
     Range("A" & row_count).Select 
     Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
      False, Transpose:=True 
     Application.CutCopyMode = False 
     row_count = row_count + 1 
    End If 
Next 

End Sub

相關問題