勾选时获取复选框的单元格地址
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 所有复选框的单元格地址,但我只想要我勾选的复选框的一个单元格地址。我怎样才能做到这一点。
目前我正在尝试举办活动来实现这一目标,但到目前为止还没有成功。
请使用下一种方式:
- 复制标准模块中的下一个 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
- 尝试选中和取消选中复选框...
如果您需要 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
嗨,我正在研究 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 所有复选框的单元格地址,但我只想要我勾选的复选框的一个单元格地址。我怎样才能做到这一点。
目前我正在尝试举办活动来实现这一目标,但到目前为止还没有成功。
请使用下一种方式:
- 复制标准模块中的下一个 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
- 尝试选中和取消选中复选框...
如果您需要 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