Excel VBA添加新行脚本不根据button的位置添加行

我有一个Excel电子表格,我已经添加了一个button,我想单击一个button,拿一个该行的副本,然后复制下面。

由于某种原因,它似乎没有select我点击button的行,但是光标所在的位置意味着复制了错误的行。

有没有什么办法可以改变下面的button被按下的地方?

Sub InsertRows() Dim x As Integer x = Application.InputBox("Number of Rows", "Number of Rows", Type:=1) If x = False Then Exit Sub ActiveCell.EntireRow.Copy Range(ActiveCell, ActiveCell.Offset(x - 1, 0)).EntireRow.Insert Shift:=xlDown Application.CutCopyMode = False End Sub 

提前谢谢了

人族

编辑

我的最终解决scheme是托马斯的帮助。

略有不同的是,这允许button自己也被复制以及行。

 Sub InsertRows() Dim iRow As Integer Dim x As Integer Dim i As Integer x = Application.InputBox("Number of Rows", "Number of Rows", Type:=1) iRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row If x = False Then Exit Sub For i = 0 To (x - 1) 'Range(ActiveCell, ActiveCell.Offset(x - 1, 0)).EntireRow.Insert Shift:=xlDown Range("A" & iRow).EntireRow.Copy Range("A" & iRow + 1 + i).EntireRow.Insert Shift:=xlDown Next i Application.CutCopyMode = False End Sub 

使用这个来获得你刚刚点击的button的行:

 ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row 

我真的不明白你想用你的msgbox收集一个偏移量。 所以这里的代码是激发你所问的问题,即复制button所在的行,在右下方的行中:

 Sub Button1_Click() Dim iRow As Integer iRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row Range("A" & iRow).EntireRow.Copy Range("A" & iRow + 1).PasteSpecial End Sub 

编辑:如果你想复制几次只是这样做:

 Sub Button1_Click() Dim iRow As Integer Dim x As Integer Dim i As Integer x = Application.InputBox("Number of Rows", "Number of Rows", Type:=1) iRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row For i = 0 To (x - 1) Range("A" & iRow).EntireRow.Copy Range("A" & iRow + 1 + i).PasteSpecial Next i End Sub