-1

嗨,我正在使用 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

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

4

1 回答 1

3

请使用下一种方式:

  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. 尝试选中和取消选中复选框...

如果仅在选中复选框(而不是取消选中)时才需要返回单元格地址,则可以调整代码...

编辑:

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

Sub GetChkBoxAddress()
 If ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value = 1 Then
    MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
 End If
End Sub
于 2021-01-14T18:50:32.470 回答