问题描述
您好,我正在使用 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
此代码返回所有复选框的单元格地址,但我只想要我勾选的复选框的一个单元格地址。我怎样才能做到这一点。
目前我正在尝试通过活动来实现这一目标,但到目前为止还没有成功。
解决方法
请使用下一种方式:
- 复制标准模块中的下一个 Sub:
Sub GetChkBoxAddress()
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
End Sub
- 也复制下一个代码并运行它:
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
- 尝试选中和取消选中复选框...
如果你只需要在复选框被选中(不是取消选中)时才返回单元格地址,则可以修改代码...
已编辑:
为了检索单元格地址仅用于检查,您可以使用下一个改编的Sub
:
Sub GetChkBoxAddress()
If ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value = 1 Then
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
End If
End Sub