我已经制作了一份旨在共享的Excel工作表,但其他用户在使用它时遇到了问题。当我使用它时没有错误。但人们说他们得到错误438。 我已要求他们发送调试的屏幕截图,这就是其中一个发送的
刷新的对象是从.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
答案 0 :(得分:0)
我认为438是不受支持的财产或方法。因此,对于Application.DisplayStatusBar,如果指向的任何应用程序没有名为DisplayStatusBar的属性,您将收到此错误。
这可能是由于Excel的不同版本所致。如果您的版本较晚,则可能支持旧版本中未包含的属性和方法。点击互联网查看版本差异。
一个技巧可能是包含一些调试,以便获得错误的人可以提供有关代码所在位置的反馈。或者包含一个错误处理程序来捕获更多错误。
答案 1 :(得分:0)
我已经发现了错误。如上所述,refreshig的对象是一个从.txt文件中提取信息的表。 将表链接到外部对象是仅在2013年才能使用的功能。这就是为什么使用2013之前的任何内容的每个人都无法使代码工作