勾选时获取复选框的单元格地址

Getting the Cell Address of Checkbox when ticked

嗨,我正在研究 Excel VBA,这将使我获得当前勾选的复选框的单元格地址。我可以使用以下代码获取单元格地址。

Sub test()

    Dim ws As Worksheet
    Set ws = Sheets("Sheet 1")
    Dim chk As CheckBox

For Each chk In ws.CheckBoxes
          Debug.Print chk.TopLeftCell.Offset(0, 0).Address
Next chk

End Sub

此代码 returns 所有复选框的单元格地址,但我只想要我勾选的复选框的一个单元格地址。我怎样才能做到这一点。
目前我正在尝试举办活动来实现这一目标,但到目前为止还没有成功。

请使用下一种方式:

  1. 复制标准模块中的下一个 Sub:
Sub GetChkBoxAddress()
  MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
End Sub
  1. 也复制下一段代码,然后运行它:
Sub textAssignMacroChkBox()
  Dim sh As Worksheet, s As Shape, chkB As CheckBox
  
  Set sh = ActiveSheet
  For Each s In sh.Shapes
     If TypeName(s.OLEFormat.Object) = "CheckBox" Then
        s.OnAction = "GetChkBoxAddress"
     End If
  Next
End Sub
  1. 尝试选中和取消选中复选框...

如果您需要 return 仅当复选框被选中(而不是取消选中)时才需要单元格地址,可以修改代码...

已编辑:

为了检索单元格地址仅用于检查,您可以使用下一个改编Sub

Sub GetChkBoxAddress()
 If ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value = 1 Then
    MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
 End If
End Sub