引用相对于ActiveX命令按钮VBA的单元格

时间:2012-07-17 09:32:55

标签: excel-vba button vba excel

我在Excel中的很多不同工作表上都有很多ActiveX命令按钮。

当点击任何按钮时,我想在按钮旁边的单元格中放一个字符串。

到目前为止,这一直非常麻烦,因为我无法使用TopLeftCell按钮询问按钮Form control,只有TopLeft值控制。将这些变换为行和列并非易事,因为每张表中有很多不同的单元格高度/宽度。

我想防止在每个button_Click()中对单元格位置进行硬编码,这样我就可以毫无问题地移动按钮,修改工作表,...所以我不必更改每个按钮的代码当突然文本必须出现在按钮旁边的2个单元格而不是1个单元格时。

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