[英]Workbooks.Add not adding a new workbook
我有一個Excel函數,使用SQL pull中的信息填充字典。 為了幫助可視化答案集,我現在把它放到一個新的工作簿中 - 雖然我不再需要對它進行可視化,但我仍然覺得填充它很有幫助。
答案集不會改變,除非我自己在填充它的數據庫中做了一些事情,所以我不需要每次都執行查詢的功能。 因此,一旦填充了字典,我將繞過查詢,除非我強制它使用刷新參數初始化字典。
該模塊的結構如下:
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,則字典將填充到新工作簿中並關閉。 但是,如果我在Excel中使用ProdLookup功能,它永遠不會創建一個新的工作簿 - 如果我把一個手表放在newBook上,它會顯示它有一個ThisWorkbook的值。
試圖在Watch窗口中查看newBook的屬性會掛起Excel,我需要從任務管理器中結束任務。
我錯過了什么?
如果我在Excel中使用ProdLookup功能
如果將該函數用作UDF,則不允許創建新工作簿。 UDF僅限於將值返回到包含函數調用的單元格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.