2

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

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

到目前为止,这一直很麻烦,因为我不能TopLeftCell像使用按钮一样询问按钮的Form control,只有控件的TopLeft值。将这些转换为行和列并非易事,因为每张纸上都有很多不同的单元格高度/宽度。

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

4

1 回答 1

1

您可以使用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
于 2012-07-17T10:43:43.853 回答