正如 Headers 所暗示的那样,我的宏在原始工作表上按预期工作,但同一个宏在复制的工作表上失败 .
我有一个Excel工作簿,它从sheet1获取一个输入来复制和填充sheet2,这样该书现在包含sheet1,sheet2和sheet3(这是sheet2的填充副本) . Sheet2包含一堆复选框,复制到sheet3 . Sheet2始终具有相同的名称,但sheet3的名称每次都会更改 .
我在工作簿模块中编写了一个宏,在单击每个复选框时将信息添加到几本不同的书中 . 当单击sheet2上的复选框时,宏按预期工作,但是当我单击sheet3上的复选框时,我收到“运行时错误'1004':无法获取Worksheet类的CheckBoxes属性” .
以下是获取错误的行:
sheetname = ActiveSheet.name If Sheets(sheetname).CheckBoxes(“43”)= 1然后
两个复选框都调用相同的宏,并且工作表的名称由'sheetname = ActiveSheet.Name'指示,并且在sheet3上使用时显示正确 .
我徒劳无功的事情:
-
将"= 1"更改为"= True"
-
将"CheckBoxes"更改为"OLEObjects"
-
已验证'sheetname'是否正确
-
将sheet3复选框更改为ActiveX,应用代码
-
更改复制的复选框名称并更改代码以反映新名称
-
在sheet2和/或sheet3模块上写宏
-
"CheckBoxes(" 43 ").Value = 1"
为什么它可以在一张纸上工作,而不在另一张纸上?
感谢您的时间!
2 回答
将
CheckBox
复制到另一个工作表时,其Name
将更改 . 你需要另一种方法来识别它们,也许是Caption
?您可以使用此小Sub来识别工作表上的复选框的名称和 Headers
在立即窗口中查看结果
此函数将返回带有给定 Headers 的复选框(如果有多个具有给定 Headers 的CB,则此操作无效)
像这样使用它
您应该能够访问该复选框
要么
希望有所帮助 .