2012-07-17 69 views
2

我在Excel中很多不同的工作表上有很多ActiveX命令按钮。引用单元格相对于ActiveX命令按钮VBA

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

到目前为止,我不能要求按钮的TopLeftCell作为具有Form control按钮时,仅控制的TopLeft值这已经相当麻烦。将它们转换为行和列是不平凡的,因为每张表中都有很多不同的单元格高度/宽度。

我想要防止在每个button_Click()中对单元格位置进行硬编码,因此我可以无任何问题地移动按钮,修改工作表......所以我不必在突然之间更改每个单一按钮的代码文本必须在按钮旁边显示2个单元格,而不是1个单元格。

回答

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 
+1

谢谢!而且你说的没错,这个onpleftcell也可以用于ActiveX按钮 – Aerus 2012-07-18 10:14:23

相关问题