2017-07-25 331 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

相关问题