2017-01-09 20 views
0

我嘗試過搜索其他問題,我發現類似的粘貼到新工作表的下一行,但我永遠無法讓他們工作。如何使用VBA Excel中的按鈕複製一行並粘貼到新工作表?

我在做什麼是庫存跟蹤表。 「當前庫存」是庫存輸入的地方。然後,我有「歷史5440」,我想爲戴爾Latitude 5440筆記本電腦創建每週的歷史記錄。

我想要發生的是當您輸入當前庫存時,您單擊提交按鈕並讓它找到5440項目(A8)並複製B8:G8中的輸入。一旦被複制,將它粘貼到從列B開始的「歷史5440」中的下一個可用行。

我有按鈕還配置爲發送當前庫存的電子郵件,它工作得很好。

讓我知道,如果我可以提供任何更多的信息。謝謝您的幫助!!

Sub Copy5440s() 

' Copy5440s Macro 
' Copys the 5440 info and pastes it to the next available row in History 5440. 

Range("B8:G8").Copy 
NextRow = Sheets("History 5440").Cells(Rows.Count, 1).End(xlUp).Row + 1 
Sheets("History 5440").Paste 

End Sub 

所以我有事情使用遵循三行代碼工作。

Sub Test5440_2() 

' copyWeek Macro 

Range("B3").Copy 
Sheets("History 5440").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 

' Copy Laptop Info 

Range("B8:E8").Copy Sheets("History 5440").Range("B1048576").End(xlUp).Offset(1, 0) 

'Copy Last weeks 

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0) 
End Sub 

這工作得很好。但是,當我將其複製到其他工作表時,它只會進行部分複製。它適用於前兩個「歷史」選項卡。之後它只複製「筆記本電腦信息」,而不是周或lastweek。

對於3個任務來說,它有很多線條,所以如果有一種方法來鞏固一些東西來使它更清潔,我很想弄明白。我認爲這就是爲什麼它只適用於前兩個工作表?

「的筆記本電腦複製信息,並移動到它的歷史標籤

Range("B8:e8").Copy Sheets("History 5440").Range("B1048576").End(xlUp).Offset(1, 0) 

Range("B9:e9").Copy Sheets("History 7450").Range("B1048576").End(xlUp).Offset(1, 0) 

Range("B10:e10").Copy Sheets("History 7470").Range("B1048576").End(xlUp).Offset(1, 0) 

Range("B11:e11").Copy Sheets("History MBP 15 Retina").Range("B1048576").End(xlUp).Offset(1, 0) 

Range("B12:e12").Copy Sheets("History MBP 13 Retina").Range("B1048576").End(xlUp).Offset(1, 0) 

'Copy week and move to history 

Range("B3").Copy 
Sheets("History 5440").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 

Range("B3").Copy 
Sheets("History 7450").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 

Range("B3").Copy 
Sheets("History 7470").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 

Range("B3").Copy 
Sheets("History MBP 15 Retina").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 

Range("B3").Copy 
Sheets("History MBP 13 Retina").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 

'Copy Last weeks 

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0) 

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0) 

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0) 

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0) 

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0) 
+0

如果您已經有一些代碼,請編輯您的問題以包含代碼。如果你不這樣做,任何人都不會願意從頭開始編寫它 - 不幸的是,我們不是一個腳本編寫服務。如果您還可以提供您的數據/您希望看到的示例 - 屏幕截圖也有幫助。 – CallumDA

+0

嗨Callum,是的,我提出了添加更多信息的意圖,但之後我們在辦公室發生網絡中斷,我被拖走了。我附上了我放在一起的代碼,以及從位置複製的屏幕快照和「到」位置。 –

+0

當我運行它時,我可以讓它工作,但它會將它粘貼到隨機單元格中。這是我正在使用的最新代碼,也是我實際上在某種程度上正確地做了某些事情的唯一代碼。 –

回答

0
Private Sub CommandButton1_Click() 
    ThisWorkbook.Sheets("Sheet2").Range("a2").Value = ThisWorkbook.Sheets("Sheet1").Range("a2").Value 
End Sub 

這通常是一個非常容易的事:)

+0

所以,我想的是,這裏是代碼 私人小組test5440() 「test5440宏 ThisWorkbook.Sheets( 」當前庫存「)範圍( 」B8:G8「)。值= ThisWorkbook.Sheets(」。歷史5440「)。範圍(」B5:G5「)。值 結束小組 –

+0

我也記錄從我所看到別人在做一些YouTube視頻宏: 我也是在頂部沒有私人試過因爲那是我錄製的宏如何使得。它看起來像這樣: 子Test5440_2() ' ' Test5440_2宏 表( 「當前庫存」)選擇 範圍( 「B8:G8」)。選擇 Selection.Copy 表( 「歷史5440」)。 。選擇 ActiveCell.Select Selection.End(xlUp)。選擇 ActiveCell.Offset(1,0).Range( 「A1」),選擇 ActiveSheet.Paste 結束子 –

+0

當我記錄了的宏,我粘貼的B8:G8到歷史5440的單元格B5。當我運行宏時,它將它粘貼到D6中。當再次運行時,它會將其放到D5中。 –

0

我能夠通過實現我想要的結果如下:

Range("B8:G8").Copy Sheets("History 5440").Range("B1048576").End(xlUp).Offset(1, 0) 

它可能不是最有效的,但它可以完成工作。如果您對如何改進它有建議,我很樂意聽到它!

相關問題