工作簿。添加不添加新的工作簿

我有一个Excel函数,用SQL拉来的信息来填充字典。 为了帮助可视化答案集,我把它当前倾倒到一个新的工作簿中 – 虽然我不需要再将其可视化,但是我仍然发现它有助于填充。

答案集不会改变,除非我自己已经做了一些在数据库填充它,所以我不需要函数来执行查询每一次。 因此,一旦字典填充,我绕过查询,除非我强制它用刷新参数初始化字典。

该模块的结构如下:

Option Explicit Option Compare Text Private dProducts As Scripting.Dictionary ------ Function ProdLookup(sValue As Variant, sReturn As Variant, sLookupType As Variant, _Optional iVendor As Integer, Optional bRefresh As Boolean) As Variant If sValue = "" Then ProdLookup = "" Exit Function End If If sLookupType = "SKU" Then If (dProducts Is Nothing) Or (bRefresh = True) Then Call Create_dProdsBySKU End If ProdLookup = dProducts(CStr(sValue.Value))(CStr(sReturn.Value)) Exit Function End If End Function ------ Sub Create_dProdsBySKU() Dim newBook As Workbook Set newBook = Workbooks.Add 'Rest of code to create query, run it, retrieve results, dump onto 'newBook, and populate into dProducts newBook.Close SaveChanges:=False End Sub 

如果我只是从编辑器中运行Create_dProdsBySKU,字典会填充到一个新的工作簿中,然后closures。 但是,如果我在Excel中使用ProdLookup函数,它永远不会创build一个新的工作簿 – 如果我把一个手表放在newBook上,它将显示它具有ThisWorkbook的值。

试图在Watch窗口中看到newBook的属性挂起Excel,我需要从任务pipe理器中结束任务。

我错过了什么?

如果我在Excel中使用ProdLookup函数

如果您将该function用作UDF,则不允许创build新的工作簿。 UDF仅限于向包含函数调用的单元格返回一个值。