2017-07-25 129 views
0

完成這裏的業餘愛好者。我一直在困惑這幾個小時,並且我找不到任何幫助我的任何其他線索。如果在其他地方問過這個問題,我的智慧就很難過了。Excel VBA插入複製的單元格並將單元格向下移動錯誤

我試圖創建一個可笑的簡單宏做到以下幾點:

Go to Sheet2, 
Select C6:C10 
Copy 
Go to Sheet3 
Insert copied cells in B2 and shift the other cells down. 

我這樣做只是通過錄制宏,但每次我這樣做的時候,我得到不同的錯誤。我現在的錯誤是'插入方法的範圍類失敗',但有時錯誤彈出'Selection.Copy'。這是我有的代碼:

Sub InsertCellsShitDown() 
' 
' InsertCellsShitDown Macro 
' 

' 
Sheets("Booking Sheet").Select 
Range("C6:C10").Select 
Selection.Copy 
Sheets("Sheet1").Select 
Range("B2").Select 
Selection.Insert Shift:=xlDown 
End Sub 

任何幫助將非常感激。

+0

錯誤很可能是由於使用了Select方法。 [建議避免使用該語句](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) – davidmneedham

+0

請刪除MACROS標記 - 它應該不適用於VBA/MS-Office語言。 – flaZer

+0

也許是因爲子被稱爲'ShitDown':] – Slai

回答

1
Sub InsertCellsShiftDown() 
' 
' InsertCellsShitDown Macro 
Dim bookingWS As Worksheet, mainWS As Worksheet 
Dim copyRng As Range 

Set bookingWS = Sheets("Booking Sheet") 
Set mainWS = Sheets("Sheet1") 
Set copyRng = bookingWS.Range("C6:C10") 

mainWS.Range("B2:B" & copyRng.Rows.Count + 1).Insert Shift:=xlDown 
copyRng.Copy mainWS.Range("B2") 
End Sub 

這是如何工作的?我假設你想插入5行,所以從B2:B7,然後把數據。

+0

這完全沒有bug(大量開發!),但它將所有行向下移動,這是我不想要的。 我需要向下移動的唯一單元格是我插入的單元格正下方的行。那有意義嗎?我認爲'EntireRow'是這裏的問題。 – Knargle

+0

@Knargle - Yah,檢查編輯(我剛剛刪除了EntireRow'部分) – BruceWayne

+0

Bingo。非常感謝!我需要花一些時間認真學習這一點。 – Knargle

相關問題