我在Excel中的很多不同工作表上都有很多ActiveX命令按钮。
当点击任何按钮时,我想在按钮旁边的单元格中放一个字符串。
到目前为止,这一直非常麻烦,因为我无法使用TopLeftCell
按钮询问按钮Form control
,只有Top
和Left
值控制。将这些变换为行和列并非易事,因为每张表中有很多不同的单元格高度/宽度。
我想防止在每个button_Click()
中对单元格位置进行硬编码,这样我就可以毫无问题地移动按钮,修改工作表,...所以我不必更改每个按钮的代码当突然文本必须出现在按钮旁边的2个单元格而不是1个单元格时。
答案 0 :(得分:1)
您可以按照here by Andrew Poulson所述使用此类模块方法来满足所有按钮
我不理解你的评论TopLeftCell
- 它可用于ActiveX按钮
<强> Class Module
强>
`named as Class1
Public WithEvents ButtonGroup As CommandButton
Private Sub ButtonGroup_Click()
Sheets(ButtonGroup.Parent.Name).Cells(ButtonGroup.TopLeftCell.Row, ButtonGroup.TopLeftCell.Column) = "Done"
End Sub
<强> Normal Module
强>
Dim Buttons() As New Class1
Sub Class_Init()
Dim Sh As Worksheet
Dim Obj As OLEObject
Dim ButtonCount As Integer
For Each Sh In ThisWorkbook.Worksheets
For Each Obj In Sh.OLEObjects
If TypeName(Obj.Object) = "CommandButton" Then
ButtonCount = ButtonCount + 1
ReDim Preserve Buttons(1 To ButtonCount)
Set Buttons(ButtonCount).ButtonGroup = Obj.Object
End If
Next Obj
Next Sh
End Sub