Vba windows.visible=false,防止使用命名范围

Vba windows.visible=false,防止使用命名范围,vba,excel,range,hidden,Vba,Excel,Range,Hidden,我有一组用户表单,可以写入数据库(便于数据输入)。其中两个用户表单使用combobox rowsource数据库中的命名范围: Application.Workbooks.Open "path\TestDestination.xlsx" Me.ContactCompany.RowSource = "test.CompanyList" 这工作正常,但会打开数据库文件,即使我关闭屏幕更新(?)。进一步搜索后,似乎application.screenupdating=false正是我要寻找的。我将

我有一组用户表单,可以写入数据库(便于数据输入)。其中两个用户表单使用combobox rowsource数据库中的命名范围:

Application.Workbooks.Open "path\TestDestination.xlsx"
 Me.ContactCompany.RowSource = "test.CompanyList"
这工作正常,但会打开数据库文件,即使我关闭屏幕更新(?)。进一步搜索后,似乎application.screenupdating=false正是我要寻找的。我将这些行更改为以下代码:

 Application.Workbooks.Open "path\TestDestination.xlsx"
 Me.ContactCompany.RowSource = "test.CompanyList"   
 Windows("TestDestination.xlsx").Visible = False'(Also tried activewindow.visible = false)
这确实可以隐藏工作簿,但无论出于何种原因,输入工作簿都会导致命名范围(test.CompanyList)不可用,并返回超出范围的错误。我通过广泛搜索找到的唯一解决方案表明,这可能是因为它在文件名中添加了[hidden],因此造成了通信错误(如果我理解正确的话)。为了避免这种情况,我在打开后立即插入了这一行

ActiveWindow.Caption = TestDestination 

没有骰子。我很抱歉,如果这是一个明显的解决方案,或者如果我没有很好地解释,我根本不知道VBA,我只是在学习工作任务。如有任何建议,将不胜感激。谢谢。

当你说数据库时,我认为是指另一个Excel文件,而不是Access或MySQL之类的东西

以这种方式引用命名范围有效
wrkBk.Names(“MyNamedRange”).referestorange
在本例中,我将数字放在命名范围内,并在源工作簿隐藏时显示一个消息框,给出数字的总和

Sub Test()

    Dim wrkBk As Workbook

    Set wrkBk = Workbooks.Open("path\TestDestination.xlsx")
    Windows(wrkBk.Name).Visible = False
    MsgBox WorksheetFunction.Sum(wrkBk.Names("MyNamedRange").RefersToRange)
    Windows(wrkBk.Name).Visible = True

End Sub

当你说数据库时,我认为是指另一个Excel文件,而不是Access或MySQL之类的东西

以这种方式引用命名范围有效
wrkBk.Names(“MyNamedRange”).referestorange
在本例中,我将数字放在命名范围内,并在源工作簿隐藏时显示一个消息框,给出数字的总和

Sub Test()

    Dim wrkBk As Workbook

    Set wrkBk = Workbooks.Open("path\TestDestination.xlsx")
    Windows(wrkBk.Name).Visible = False
    MsgBox WorksheetFunction.Sum(wrkBk.Names("MyNamedRange").RefersToRange)
    Windows(wrkBk.Name).Visible = True

End Sub

感谢您的回复,我不确定msgbox的用途,我不想要任何总和,我想使用单独工作簿上的命名范围作为行源。您假设它是excel文件是正确的,很抱歉造成混淆。msgbox和SUMMS只是一个示例,表明它引用的是命名范围。您可以使用此作为第一个单元格引用范围内的单元格,依此类推:wrkBk.Names(“MyNamedRange”).refrestorange.cells(1)感谢您的回复,我不确定msgbox的用途,我不需要任何总和,我想使用单独工作簿上的命名范围作为行源。您假设它是excel文件是正确的,很抱歉造成混淆。msgbox和SUMMS只是一个示例,表明它引用的是命名范围。您可以使用此作为第一个单元格引用范围内的单元格,依此类推:wrkBk.Names(“MyNamedRange”).refrestorange.cells(1)感谢您的回复,我不确定msgbox的用途,我不需要任何总和,我想使用单独工作簿上的命名范围作为行源。您假设它是excel文件是正确的,很抱歉造成混淆。msgbox和SUMMS只是一个示例,表明它引用的是命名范围。您可以引用范围内的单元格,将其用于第一个单元格,依此类推:wrkBk.Names(“MyNamedRange”).refrestorange.cells(1)