在Excel / VBA中使用查询表

我得到了一个“下标超出范围”错误9与我的代码。 我有一个连接到Excel的Microsoft Access数据库和一个已经使用查询表“QUERY_1”创build的表。 我想通过使用VBA更新“QUERY_2”表。 该行发生错误:

Set QueryARV = QuerySheet.QueryTables(1) 

这是完整的程序:

 Sub ChooseQueryTable() Dim QueryARV As QueryTable Dim QuerySheet As Worksheet Set QuerySheet = ThisWorkbook.Sheets("Sheet1") Set QueryARV = QuerySheet.QueryTables(1) With QueryARV .CommandType = xlCmdTable .CommandText = "QUERY_1" .Refresh End With End Sub 

在新创build的MS Excel工作簿默认情况下,您只有3个工作表,因此与您的情况相关,或者将ThisWorkbook.Sheets("Sheet4")更改为ThisWorkbook.Sheets("Sheet3") ,或者添加另一个工作表以确保Sheet4实际存在 – 问题已解决

我也build议通过添加适当的error handling来修改你的代码,如下所示:

 Sub ChooseQueryTable() Dim QueryARVIS As QueryTable Dim QuerySheet As Worksheet On Error GoTo err: Set QuerySheet = ThisWorkbook.Sheets("Sheet1") If (QuerySheet.QueryTables.Count > 0) Then Set QueryARVIS = QuerySheet.QueryTables(1) With QueryARVIS .CommandType = xlCmdTable .CommandText = "10K_WELLCOUNT_PERMIAN_ID" .Refresh End With End If Exit Sub err: MsgBox (err.Description) End Sub 

请确保QuerySheet.QueryTables(1)实际上存在(最有可能不)。 希望这会有所帮助。 最好的祝福