Windows.visible = 错误,阻止使用命名区域



我有一组写入数据库的用户表单(为了便于数据输入)。其中两个用户窗体使用数据库中的命名区域作为组合框行源:

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

最新更新