我有一张有两张纸的工作簿,"分数" &安培; "资产&#34 ;.在"得分"上有Active X复选框。只在选中时显示MsgBox。 我有这个非常简单的代码来创建一个下拉列表"分数"使用"资产"。
的值Sub testlist()
Dim scoresDatas As Range
Dim scoresList As Range
Set scoresDatas = ThisWorkbook.Worksheets("Assets").Range(ThisWorkbook.Worksheets("Assets").Cells(4, 1), ThisWorkbook.Worksheets("Assets").Cells(8, 1))
Set scoresList = ThisWorkbook.Worksheets("Scores").Range(ThisWorkbook.Worksheets("Scores").Cells(8, 4), ThisWorkbook.Worksheets("Scores").Cells(8, 4))
With scoresList.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="='" & ThisWorkbook.Worksheets("Assets").name & "'!" & scoresDatas.Address
End With
scoresList.Value = 0
scoresList.HorizontalAlignment = xlCenter
End Sub
如果我打开工作簿,请不要触摸复选框,子工作,无论工作簿在哪张表上。但是,这是奇怪的部分,如果我选中/取消选中复选框,那么代码只有在工作表"资产"被激活了。如果我在"得分"我在.Add
行
如果有人知道原因,那就太好了!谢谢!
编辑:我没有替换"这本工作簿......"故意在我测试时避免引用问题 编辑2:此代码与复选框无关答案 0 :(得分:1)
问题是如果选中复选框或任何其他控件,此行将失败
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="='" & ThisWorkbook.Worksheets("Assets").name & "'!" & scoresDatas.Address
因此,您需要确保选择了单元格而不是控件。例如。在上面一行之前运行Range("A1").Select
。
相反,请确保在单击复选框之后和运行sub。之前单击单元格。