错误438 Ocurrs在其他计算机上但不在我的计算机上

时间:2015-03-27 03:30:10

标签: excel vba

我已经制作了一份旨在共享的Excel工作表,但其他用户在使用它时遇到了问题。当我使用它时没有错误。但人们说他们得到错误438。 我已要求他们发送调试的屏幕截图,这就是其中一个发送的

enter image description here

刷新的对象是从.txt文件中提取信息的表

我的第一个疑问是用户在.txt文件上输入了错误的信息,因此该表无法识别它的格式。但是,该用户声称正在输入正确的信息。此外,他不是唯一一个有这个问题的人,当它只是复制并粘贴在.txt文件上时,2个人似乎不太可能插入错误的信息

看到他在屏幕截图上的界面我相信hw正在使用excel 2010.我正在使用2013.错误是因为该特定行不兼容? 这是完整的代码

Sub Regisr()
'status bar
    Application.DisplayStatusBar = True
    Application.StatusBar = "0%..."

'desproteger y actualizar
    ActiveSheet.Unprotect
    Range("a3").Select
    Selection.ListObject.TableObject.Refresh

'defincion de variables
    'contar referidos viejos
        Dim ok As Integer
        Dim Nook As Integer

        Nook = Application.WorksheetFunction.CountIf(Range("k:k"), "=NO OK")
        ok = Application.WorksheetFunction.CountIf(Range("k:k"), "=Ok") + 2

    'contar referidos nuevos
        Dim Nook2 As Integer
        Nook2 = Application.WorksheetFunction.CountIf(Range("i:i"), "=NO OK")


    Application.Calculate

'ordenar azul por no ok
    Range("a3", Range("i3").End(xlDown)).Sort key1:=Range("i3"), order1:=xlDescending, key2:=Range("a3"), Header:=xlYes

    Application.Calculate

'ordenar naranja por no ok
    Range(Range("k3").End(xlToRight), Range("k3").End(xlDown)).Sort key1:=Range("k3"), order1:=xlDescending, key2:=Range("o3"), Header:=xlYes
    Application.Calculate

'borrar referidos viejos
    Dim nook3 As Integer
    If Nook = 0 Then
    nook3 = 1
    Else
    nook3 = Nook
    End If
    Range(Range("l2").End(xlToRight).Offset(ok - 1, 0), Range("l" & nook3).Offset(ok, 0)).ClearContents

Application.Calculate

'agrandar tabla naranja
    If Nook2 > Nook Then
    Dim fondo As String
    Dim derecha As String
    fondo = Range("a2").End(xlDown).Offset(0, 11).Address
    derecha = Range("k2").End(xlToRight).Address
    ActiveSheet.ListObjects("Tabla26").Resize Range("k2", Range(derecha, fondo))
    Range(Range("k3").End(xlToRight), Range("k3").End(xlDown)).Sort key1:=Range("k3"), order1:=xlDescending, key2:=Range("n3"), Header:=xlYes
    End If

'ordenar naranja por no ok
    Range(Range("k3").End(xlToRight), Range("k3").End(xlDown)).Sort key1:=Range("k3"), order1:=xlDescending, key2:=Range("o3"), Header:=xlYes
    Application.Calculate

'status bar
    Application.StatusBar = "25%..."

'copiar referidos nuevos
    Dim nook4 As Integer
    If Nook2 = 0 Then
    nook4 = 1
    Else
    nook4 = Nook2
    End If
    Range(Range("a2").Offset(ok - 1, 0), Range("a" & nook4).Offset(ok, 0)).Copy
    Range(Range("o1").Offset(ok, 0), Range("o1").Offset(ok + nook4 - 1, 0)).PasteSpecial (xlPasteValues)

    Application.Calculate
    Application.StatusBar = "50%..."

'copiar y pegar clicks de ayer
    Range("e3", Range("e3").End(xlDown)).Copy
    Range("n2").End(xlToRight).Offset(1, 1).PasteSpecial (xlPasteValues)

'Copiar y pegar clicks de hoy
    Range("d3", Range("d3").End(xlDown)).Copy
    Range("n3").PasteSpecial (xlPasteValues)

Application.Calculate

'status bar
Application.StatusBar = "75%..."

'reduccion de referidos
    If Nook > Nook2 Then
    Range(Range("k2").Offset(ok - 1, 0), Range("k" & nook3).Offset(ok, 0)).EntireRow.Delete
    End If

'Asegurar columnas ocultas
    'actualizador del resumen
        resuregis = Sheets(6).Name
        Range(Range("l3"), Range("o3").End(xlDown).Offset(0, -3)).Formula = "=if(isnumber(match([@Columna1],'" & resuregis & "'!$A:$A,0)),1,0)"


    'contador de porcentaje
        datos = Sheets(2).Name
        Range(Range("m3"), Range("o3").End(xlDown).Offset(0, -2)).Formula = "=if(isnumber(index($1:$1048576,row(),match(" & datos & "!$G$74-1,$1:$1,0))),sum(index($1:$1048576,row(),match(" & datos & "!$G$74-1,$1:$1,0)),-index($1:$1048576,row(),match(" & datos & "!$G$74-2,$1:$1,0))))"

'crear nuevas fechas
    Range("q1:s1").Copy
    Range("k2").End(xlToRight).Offset(-1, 1).PasteSpecial xlPasteAll
    Application.CutCopyMode = False

'ocultar columnas
    Dim cantcolum As Integer
    cantcolum = Application.WorksheetFunction.Count(Range("p1", Range("p1").End(xlToRight))) - 25 + 15

    Range(Cells(1, 16), Cells(1, cantcolum)).EntireColumn.Hidden = True


'volver al inicio
    Range("a1").Select

'proteger
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

 'status bar
    Application.StatusBar = "100%..."
 End Sub

2 个答案:

答案 0 :(得分:0)

我认为438是不受支持的财产或方法。因此,对于Application.DisplayStatusBar,如果指向的任何应用程序没有名为DisplayStatusBar的属性,您将收到此错误。

这可能是由于Excel的不同版本所致。如果您的版本较晚,则可能支持旧版本中未包含的属性和方法。点击互联网查看版本差异。

一个技巧可能是包含一些调试,以便获得错误的人可以提供有关代码所在位置的反馈。或者包含一个错误处理程序来捕获更多错误。

答案 1 :(得分:0)

我已经发现了错误。如上所述,refreshig的对象是一个从.txt文件中提取信息的表。 将表链接到外部对象是仅在2013年才能使用的功能。这就是为什么使用2013之前的任何内容的每个人都无法使代码工作