使用按钮复制excel中的行,但按钮不应跟随

使用按钮复制excel中的行,但按钮不应跟随,excel,vba,Excel,Vba,我有很多章节的excel文件。我创建了一个宏,然后每个部分都有一个按钮。我已将该宏的按钮连接到该按钮 On button click : 现有行将被复制 添加新行 超过第一行的内容 一切正常问题在于,每次复制行时,按钮也会被复制。我不希望复制该按钮,它应该保留在前一行。或者按钮应该放在最后一行 这是代码 Sub Button_AddRow() Dim b As Object, cs As Integer ActiveSheet.Unprotect Set b = ActiveSheet

我有很多章节的excel文件。我创建了一个宏,然后每个部分都有一个按钮。我已将该宏的按钮连接到该按钮

 On button click : 
  • 现有行将被复制
  • 添加新行
  • 超过第一行的内容
一切正常问题在于,每次复制行时,按钮也会被复制。我不希望复制该按钮,它应该保留在前一行。或者按钮应该放在最后一行

这是代码

Sub Button_AddRow()
Dim b As Object, cs As Integer
ActiveSheet.Unprotect
Set b = ActiveSheet.Buttons(Application.Caller)
b.TopLeftCell.Offset(1).EntireRow.Insert
b.TopLeftCell.Offset(1).EntireRow.Insert

b.TopLeftCell.EntireRow.Select
Selection.Copy
b.TopLeftCell.Offset(1).EntireRow.Select
ActiveSheet.Paste
b.TopLeftCell.EntireRow.Select
Selection.Copy
b.TopLeftCell.Offset(2).EntireRow.Select
ActiveSheet.Paste

ActiveSheet.Cells(b.TopLeftCell.Offset(1).Row, 1).Value = ""

ActiveSheet.Protect

End Sub


尝试了很多,但没有成功。

为什么要在代码中引用该按钮?您可以使用ActiveCell:

Sub Button_AddRow()
   Dim r As Range
   ActiveSheet.Unprotect
   Set r = ActiveCell.EntireRow
   ....

我想你的问题会消失的。当然,用户必须首先单击“右”行上的某个位置。

根据iDevelop的回答,您可以使用按钮的TopLeftCell获取所需行的地址,然后像这样清理代码:

Option Explicit

Sub Button_AddRow()

Dim b As Object, cs As Integer, cel As String

ActiveSheet.Unprotect

Set b = ActiveSheet.Buttons(Application.Caller)
cel = b.TopLeftCell.Address

Range(cel).Offset(1).EntireRow.Resize(2).Insert

Range(cel).Offset(1).EntireRow.Resize(2).Value = Range(cel).Value

Cells(Range(cel).Offset(1).Row, 1).Value = ""

ActiveSheet.Protect

End Sub

那么,您希望复制当前行并将其粘贴为相邻的新行吗?不需要复制按钮,对吗?是的,我知道斯科特的代码和它的工作原理。它可以创建新行。我的要求是创建新行,然后将该按钮从上一行移动到最后一行。客户端需要在每个部分的行末添加行按钮。在这个新的cretead行旁边,并没有和最后一行相同的合并列…所以我再一次被卡住了。。。。