如何通过VBA代码添加将引用另一个CLOSED工作簿区域的验证列表?我不能做这个Formula1:="=INDEX('C:\...)"
?
我可以管理:
With ThisWorkbook.Sheets("sertifika").Range("Ab63:Ab100").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:=xlBetween, _
Formula1:=Join(checkref, ",")
但对于长字符串值文件.xlsm文件将损坏后保存的文件.
然后我试着:
With ThisWorkbook.Sheets("T").Range("K10:K100").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:=xlBetween, _
Formula1:="=INDEX('C:\[D.xls]Lists'!$D$2:$D$10,,1)"
Return error 1004
2条答案
按热度按时间9jyewag01#
根据Microsoft的文档,您不能使用外部引用进行数据验证。您可以在以下链接中找到文档...
https://learn.microsoft.com/en-us/office/troubleshoot/excel/external-references-data-validation-fails
作为一种解决方法,您可以使用ExecuteExcel4Macro方法从关闭的工作簿访问值。您可以在以下链接中找到文档...
https://learn.microsoft.com/en-us/office/vba/api/excel.application.executeexcel4macro
使用此方法,将访问这些值以构建一个字符串,然后将其用作验证的源。但是,请注意,有255个字符的限制。
此外,这意味着每次打开工作簿时都需要更新数据验证,以确保具有最新值。若要自动执行此操作,可以使用工作簿打开事件过程。
[常规模块]
下面的宏应该放在一个常规的模块中,并将添加来自外部源的数据验证...
[此工作簿模块]
下面的宏应该放在ThisWorkbook的代码模块中,并且在打开工作簿时自动更新数据验证的值…
bfnvny8b2#
您可以使用Excel数据模型在没有宏的情况下完成此操作。首先将下拉选项放在源工作簿中,并命名该范围(使用公式->名称管理器)。关闭此工作簿。在主工作簿中,转到数据-->获取数据-->从文件-->从Excel工作簿。然后选择源工作簿(需要关闭)并单击导入。从列表中选择命名范围。单击“加载”。然后单击主工作簿中加载的数据,单击Data --> Queries and Connections --> Properties,然后单击查询名称旁边的查询属性图标(一个带有两个正方形的矩形)。将数据设置为打开文件时刷新,以及每5分钟刷新一次。然后,可以使用主工作簿中的此数据副本作为数据验证列表的源。