Excel VBA调用异常行为

Excel VBA调用异常行为,excel,vba,Excel,Vba,我正在使用下面的代码创建复选框。它被分配到一个按钮上,每次都能完美地工作(并且已经工作了几个星期)。它统计正在使用的行数,然后在A列和P列中为每个正在使用的行添加框 但是,当从另一个宏调用此模块时,它失败。宏将激发,但它将复选框放置在错误的位置 我把它称为模块中的最后一行代码,因此在它之后没有任何东西可以改变它。作为一个独立的checkbox宏仍然有效,我实际上正在使用它来纠正错误 有趣的是,如果我只是将代码粘贴到我的模块中而不是调用它,它仍然不能正常工作 复选框也正确链接到我想要的单元格,只是

我正在使用下面的代码创建复选框。它被分配到一个按钮上,每次都能完美地工作(并且已经工作了几个星期)。它统计正在使用的行数,然后在A列和P列中为每个正在使用的行添加框

但是,当从另一个宏调用此模块时,它失败。宏将激发,但它将复选框放置在错误的位置

我把它称为模块中的最后一行代码,因此在它之后没有任何东西可以改变它。作为一个独立的checkbox宏仍然有效,我实际上正在使用它来纠正错误

有趣的是,如果我只是将代码粘贴到我的模块中而不是调用它,它仍然不能正常工作

复选框也正确链接到我想要的单元格,只是框的实际视觉定位不正确。A列中的框始终过高7行,P列中的框始终过高7行,K列中的框始终过高7行

我不知道为什么调用模块或将代码添加到新模块中会导致效果发生变化。有什么建议吗

选项显式
子固定盒(PC)()
将wb设置为工作簿
将ws设置为工作表
将cb设置为复选框
Dim工作范围作为范围、小区作为范围、切换范围作为范围
暗淡的光线和长的一样
设置wb=ThisWorkbook
设置ws=wb.Sheets(“跟踪器”)
出错时继续下一步
ActiveSheet.checkbox.Delete
lrow=ws.Cells(ws.Rows.Count,“B”).End(xlUp).Row
设置工作范围=范围(“A12:A”和lrow)
设置移交范围=范围(“P12:P”和lrow)
对于工作范围内的每个单元格
设置cb=ws.checkbox.Add(cell.Left,cell.Top,95,6)
带cb
.Caption=“”
.LinkedCell=单元格.Address
以
下一个
对于切换范围内的每个小区
设置cb=ws.checkbox.Add(cell.Left,cell.Top,95,6)
带cb
.Caption=“”
.LinkedCell=单元格.Address
以
下一个
端接头

那么您在哪里添加复选框,到
ActiveSheet
ws
?假设您想在工作表
Tracker
(而不是活动工作表)上添加复选框,您必须使用
设置工作范围=ws.range(“A12:A”&lrow)
。并使用
ws.复选框。删除
。您不应该在代码中依赖于
ActiveSheet
。我从头开始重写,确保使用了正确的变量,并且它看起来正常工作,谢谢。