我有一张包含 200 多行的 Excel 工作表。我希望每行上都有一个按钮,单击该按钮时会将该行的值复制到第二张工作表中。
以下是我正在寻找的内容。但是我无法更新超过 200 个按钮的宏。
有没有办法让每个按钮与其所在的行相关?
Rows("6:6").Select
Selection.Copy
Sheets("Sheet1").Select
Rows("6:6").Select
ActiveSheet.Paste
End Sub
答案1
如果您确保单元格内有按钮,则可以使用Application.Caller
来确定按下了哪个按钮,并Shapes(btnName).TopLeftCell
获取按钮的位置。
这样您就可以对所有按钮使用相同的宏。
然后你只需将这些值赋给变量,最终得到类似
Dim btnName As String, btnRow As Long
btnName = Application.Caller
btnRow = ActiveSheet.Shapes(btnName).TopLeftCell.Row
ActiveSheet.Rows(btnRow).Copy Sheets("Sheet1").Rows(btnRow)
这会将所有内容(包括按钮本身)复制到"Sheet1"
。如果您只想要值,则可以使用PasteSpecial Paste:=xlValues
。
ActiveSheet.Rows(btnRow).Copy
Sheets("Sheet1").Rows(btnRow).PasteSpecial Paste:=xlValues
或者设置值。
Sheets("Sheet1").Rows(btnRow).Value = ActiveSheet.Rows(btnRow).Value