Vba 选中/取消选中复选框时出现运行时错误1004

Vba 选中/取消选中复选框时出现运行时错误1004,vba,excel,Vba,Excel,我有一本有两张纸的工作簿,“分数”和“资产”。“分数”上有活动的X复选框,选中时仅显示MsgBox。 我有一个非常简单的代码来创建“分数”下拉列表,其中包含“资产”的值 如果我打开工作簿,不要触摸复选框,无论工作簿在哪张工作表上,子项都有效。但是,这是一个奇怪的部分,如果我选中/取消选中复选框,那么代码将只在“资产”表被激活时工作。如果我在“分数”上,我在行上有一个运行时错误1004。添加 如果有人知道原因,那就太好了!谢谢 编辑:我并没有故意替换“thisworkbook…”以避免在测试时出现

我有一本有两张纸的工作簿,“分数”和“资产”。“分数”上有活动的X复选框,选中时仅显示MsgBox。 我有一个非常简单的代码来创建“分数”下拉列表,其中包含“资产”的值

如果我打开工作簿,不要触摸复选框,无论工作簿在哪张工作表上,子项都有效。但是,这是一个奇怪的部分,如果我选中/取消选中复选框,那么代码将只在“资产”表被激活时工作。如果我在“分数”上,我在
行上有一个运行时错误1004。添加

如果有人知道原因,那就太好了!谢谢

编辑:我并没有故意替换“thisworkbook…”以避免在测试时出现引用问题
编辑2:此代码与复选框无关。问题是,如果选中复选框或任何其他控件,此行将失败

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="='" & ThisWorkbook.Worksheets("Assets").name & "'!" & scoresDatas.Address
因此,您需要确保选择了单元格而不是控件。例如,运行
Range(“A1”)。在上面一行之前选择


相反,请确保在单击复选框后和运行sub之前单击单元格。

如果内存可用,则不能使用DV直接引用其他工作表中的范围。您必须使用命名范围。对不起,这里不是英语母语,您所说的“如果内存可用”是什么意思?如果我不能,为什么在我触摸复选框之前它会工作?这个代码与你的复选框有什么关系?根本没有关系!我想我是在胡说八道——刚刚测试过,你的代码对我有用。我很困惑。为什么更改复选框时会运行此代码?我想我别无选择,只能在此处使用select。谢谢<代码>选择
一点也不坏。选择是否可以避免,这只是一种不好的做法。
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="='" & ThisWorkbook.Worksheets("Assets").name & "'!" & scoresDatas.Address