Excel 勾选时获取复选框的单元格地址
Hy,我正在使用Excel VBA,它将为我获取当前选中复选框的单元格地址。我可以使用以下代码获取手机地址Excel 勾选时获取复选框的单元格地址,excel,vba,excel-2016,vba7,Excel,Vba,Excel 2016,Vba7,Hy,我正在使用Excel VBA,它将为我获取当前选中复选框的单元格地址。我可以使用以下代码获取手机地址 子测试() 将ws设置为工作表 设置ws=工作表(“工作表1”) Dim chk As复选框 对于ws.中的每个chk复选框 Debug.Print chk.TopLeftCell.Offset(0,0).Address 下一个chk 端接头 这段代码返回所有复选框的单元格地址,但我只需要选中复选框的一个单元格地址。我怎样才能做到这一点目前我正在尝试实现这一目标,但迄今为止没有成功。请使
子测试()
将ws设置为工作表
设置ws=工作表(“工作表1”)
Dim chk As复选框
对于ws.中的每个chk复选框
Debug.Print chk.TopLeftCell.Offset(0,0).Address
下一个chk
端接头
这段代码返回所有复选框的单元格地址,但我只需要选中复选框的一个单元格地址。我怎样才能做到这一点
目前我正在尝试实现这一目标,但迄今为止没有成功。请使用下一种方法:
子项
:
Sub GetChkBoxAddress()
If ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value = 1 Then
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
End If
End Sub
我认为这可能通过启用复选框上的单击事件来解决,但我找不到如何在所有复选框上启用单击事件-boxes@Warcupine我如何将_changeevent添加到所有复选框中,因为我没有所有复选框的名称,并且复选框的数量可能会更改。看起来您的复选框属于工作表形式。是否正确?我不确定您有什么类型的复选框或它们是如何创建的,但您可以使用
.onaction
设置命令是的,我有表单复选框。我从Developer->Insert->Form Control->Check Box创建了它们。这是一个很好的解决方案,但并不适合当前的情况,如果我以后必须添加新的复选框,该怎么办?@abdulsamad:您只需再次运行textAssignMacroChkBox
,它就会将相同的宏分配给所有现有的宏。。。这不是很方便吗?是的,我将在Workbook_Open事件中添加它,以便它自动将宏添加到所有复选框中。但完美的解决方案是使用运行相同代码的复选框单击事件。@abdulsamad:恐怕您对我的代码一无所知。这就是它的作用!它指定相同的宏,能够识别工作表中所有现有复选框的已单击复选框。。。您可以使用Workbook_Open事件,但如您所说,如果添加新复选框,则必须运行代码。我已经了解了代码中的所有内容,但我不想每次创建新复选框时都反复运行相同的代码,这就是我试图找到使用click event的完美解决方案的原因。
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 GetChkBoxAddress()
If ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value = 1 Then
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
End If
End Sub