0

我有很多部分的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

看看有多少个按钮,来了,最后只需要一个按钮

尝试了很多但没有成功。

4

2 回答 2

0

跟进 iDevelop 的回答,您可以使用 Button 的 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
于 2013-01-03T14:32:06.827 回答
0

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

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

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

于 2013-01-03T14:04:54.147 回答