gpt4 book ai didi

mysql - Excel VBA macos 中 QueryTable 创建的范围名称

转载 作者:行者123 更新时间:2023-11-29 16:46:31 25 4
gpt4 key购买 nike

我正在 Excel for Mac 2016 中运行 QueryTable,目标范围为“data_value”,电子表格中单元格 A1 的名称为“hs”,QueryTable 在提取数据后将名称“ExternalData_1”分配给同一单元格 A1,我我想要删除名称“ExternalData_1”,以便我可以在脚本末尾引用“data_value”中的值,但不能。

Function get_data(input_id As String, input_date As String)

Dim sqlstring As String
Dim connstring As String
Dim sLogin As String

sLogin = "DATABASE=[DB];UID=[USER];PWD=[PWD]"
sqlstring = "SELECT data_value FROM tb_data_values WHERE data_date='" & input_date & "'"
connstring = "ODBC;DSN=myodbc;" & sLogin

With
Worksheets("hs").QueryTables.Add(Connection:=connstring, Destination:=Range("data_value"), Sql:=sqlstring)
.FieldNames = False
.BackgroundQuery = False
.Refresh
.RefreshStyle = xlOverwriteCells

End With

get_data = Range("data_value")

Dim qt As QueryTable
For Each qt In Worksheets("hs").QueryTables
qt.Delete
Next qt

Worksheets("hs").Names("ExternalData_1").Delete
Worksheets("hs").Range("data_value").ClearContents

End Function

VBA 在 Worksheets("hs").Names("ExternalData_1").Delete 行停止运行。

最佳答案

只需删除该行即可。当您删除每个查询表时,您已经删除了其命名范围。因此,您的调用 Worksheets("hs").Names("ExternalData_1").Delete 是多余的,并且会出错,因为 Name 对象不存在。如果您将函数包装在正确的错误处理中,则会引发错误:

Application-defined or Object-defined error

要进行测试,请在 QueryTables 循环之后运行 Name 范围循环。从下面,您会看到只有一个“ExternalData_1”会使用 Debug.Print 进行打印。

Dim qt As QueryTable, RngName As Name

For Each qt In Worksheets("hs").QueryTables
Debug.Print qt.Name ' "ExternalData_1" WILL PRINT
qt.Delete
Next qt

For Each RngName In Worksheets("hs").Names
Debug.Print RngName.Name ' "ExternalData_1" WILL NOT PRINT
Next RngName

或者,您可以在运行代码后在功能区 > 公式 > 名称管理器(在定义的名称部分下)(在 Mac 上可能有所不同)下检查上面没有行的代码,并看到“ExternalData_1”未列出。

Excel Ribbon Show

关于mysql - Excel VBA macos 中 QueryTable 创建的范围名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53070521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com