Workbooks.Add 未添加新工作簿
Workbooks.Add not adding a new workbook
我有一个 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,字典将填充到一个新的工作簿中,然后关闭。但是,如果我在 Excel 中使用 ProdLookup 函数,它永远不会创建新工作簿 - 如果我在 newBook 上放置一个手表,它会显示它具有 ThisWorkbook 的值。
试图在 Watch window 中查看 newBook 的属性挂起 Excel,我需要从任务管理器中结束任务。
我错过了什么?
If I use the ProdLookup function within Excel
如果您将该函数用作 UDF,则不允许创建新工作簿。 UDF 仅限于仅向包含函数调用的单元格返回一个值。
我有一个 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,字典将填充到一个新的工作簿中,然后关闭。但是,如果我在 Excel 中使用 ProdLookup 函数,它永远不会创建新工作簿 - 如果我在 newBook 上放置一个手表,它会显示它具有 ThisWorkbook 的值。
试图在 Watch window 中查看 newBook 的属性挂起 Excel,我需要从任务管理器中结束任务。
我错过了什么?
If I use the ProdLookup function within Excel
如果您将该函数用作 UDF,则不允许创建新工作簿。 UDF 仅限于仅向包含函数调用的单元格返回一个值。