一台计算机上的运行时错误1004,但另一台计算机上没有

时间:2014-04-30 13:37:58

标签: excel excel-vba vba

我不是很熟悉宏,并且无法弄清楚为什么我在网络上的所有其他机器上获得运行时错误1004而不是我的?我在我的电脑上创建了这个文件。 这是代码:

Sub CustomerDetailed()
'
    Dim sheetName As String
    sheetName = "Sales Customer Detailed Report"

    ShowSheets (sheetName)

    Sheets("SageWinman").Range("H2").ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Sales Customer Detailed Report").PivotTables("CustomerDetailed").PivotCache.Refresh
    Sheets("Sales Customer Detailed Report").Select
End Sub

所有功能 - 只需单击按钮即可打开隐藏的工作表,然后刷新数据透视表数据。 调试器指出了这条道:

Sheets("SageWinman").Range("H2").ListObject.QueryTable.Refresh BackgroundQuery:=False

2 个答案:

答案 0 :(得分:0)

此错误表示通常某些命名范围/单元格不存在。

因此,在有问题的行上,如果此工作表不存在,则可以是Sheets(“SageWinman”)元素;如果将excel的单元格命名参数设置为数字引用(而不是字母),则可以是Range(“H2”) )。

检查参考样式模式:tools / options / general / R1C1参考样式

或者要找到错误,请使用以下内容替换该行:

Sub CustomerDetailed()

    Dim sheetName As String
    Dim thesheet as Worksheet
    Dim r As Range

    sheetName = "Sales Customer Detailed Report"

    ShowSheets (sheetName)

    Set thesheet  = Sheets("SageWinman")
    Set r = thesheet .Range("H2")

    r.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Sales Customer Detailed Report").PivotTables("CustomerDetailed").PivotCache.Refresh
    Sheets("Sales Customer Detailed Report").Select
End Sub

重新运行脚本;如果失败了,你应该更准确地确定哪里。

答案 1 :(得分:0)

我发现了 - 为什么

您必须使用自己的ODBC驱动程序设置每个用户。   - 所以,在网络上 - 确保每个用户都有指向你的数据库的ODBC驱动程序和在他们的机器上设置