簡體   English   中英

Workbooks.Add不添加新工作簿

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM