我有一个装满Checkboxes的文档,我不想为每个复选框编写特定的VBA代码,因为文件大小需要保持相对较小。我试图用我的代码做的是当选中复选框时,它会自动选择它旁边的单元格(不使用“Range”硬编码),然后执行其余的编程VBA函数。
如何获取复选框的名称,选择链接的单元格,或使用某种“偏移”属性选中复选框旁边的单元格?我完全被难过了!
提前感谢您的帮助。
答案 0 :(得分:2)
使用Form Controls
代替ActiveX Controls
复选框。
以下代码不适用于ActiveX控件的复选框。此外,您需要将宏指定给复选框,只需尝试从VBEditor运行此代码就会出错。
假设所有复选框都在同一张纸上,请选中所有复选框并为它们分配相同的宏,如下所示
Sub checkBoxHandler()
Dim shp As Shape
Set shp = ActiveSheet.Shapes(Application.Caller)
MsgBox shp.Name 'Name
MsgBox shp.TopLeftCell.Offset(1).Address ' 1 Rows below checkbox
ActiveSheet.Range(shp.ControlFormat.LinkedCell).Select ' Select linked cell.
Set shp = Nothing
End Sub
此处Application.Caller帮助VBA识别正在点击的复选框。