我有一组写入数据库的用户表单(为了便于数据输入)。其中两个用户窗体使用数据库中的命名区域作为组合框行源:
Application.Workbooks.Open "pathTestDestination.xlsx"
Me.ContactCompany.RowSource = "test.CompanyList"
这工作正常,但打开数据库文件,即使我关闭屏幕更新 (?)。经过进一步搜索,似乎application.screenupdate = false正是我正在寻找的。我将这些行更改为下面的代码:
Application.Workbooks.Open "pathTestDestination.xlsx"
Me.ContactCompany.RowSource = "test.CompanyList"
Windows("TestDestination.xlsx").Visible = False'(Also tried activewindow.visible = false)
这确实可以隐藏工作簿,但无论出于何种原因,都会呈现命名范围(测试。公司列表)不能被输入工作簿使用,并返回超出范围错误。我通过广泛搜索能够找到的唯一解决方案表明,可能是由于它在文件名中添加了[隐藏],因此造成了误解(如果我理解正确的话)。为了试图规避这一点,我在打开后立即插入了这一行
ActiveWindow.Caption = TestDestination
没有骰子。如果这是一个明显的解决方案,或者如果我解释不好,我深表歉意,我根本不了解 VBA,我只是在执行工作任务时学习。任何建议将不胜感激。谢谢。
当你说数据库时,你的意思是另一个Excel文件,而不是像Access或MySQL这样的东西。
以这种方式
引用命名范围有效wrkBk.Names("MyNamedRange").参考范围
在示例中,我将数字放在命名范围内,并显示一个消息框,在隐藏源工作簿时给出数字的总和。
Sub Test()
Dim wrkBk As Workbook
Set wrkBk = Workbooks.Open("pathTestDestination.xlsx")
Windows(wrkBk.Name).Visible = False
MsgBox WorksheetFunction.Sum(wrkBk.Names("MyNamedRange").RefersToRange)
Windows(wrkBk.Name).Visible = True
End Sub