我一直运行下面的宏几年,直到最近没有问题。excel vba替换失败
在过去的几个星期里,我不得不手动改变到正确的工作表之前,它会工作。今天,它停止了这样做,所以我通过它&看到它是在第一次替换声明后退出,无论是否有数据要替换。
Sub Clean_Phone()
'
' Clean_Phone Macro
'
' Last Update - 5 Feb 2015
'
Dim tSHeet As String
Dim r As Range
On Error Resume Next ' restore Find/Replace settings to default
Set r = Cells.Find(What:=vbNullString, LookIn:=xlFormulas, _
SearchOrder:=xlRows, LookAt:=xlPart, MatchCase:=False)
' On Error GoTo 0
tSHeet = ActiveSheet.Name
Sheets("Data").Select ' DataTbl is 15 col x > 1100 row
With Sheets("Data").Range("DataTbl[[Latitude]:[Longitude]]")
.Replace What:="°", Replacement:=vbNullString, LookAt:=xlPart
End With
Sheets("Data").Select
With Sheets("Data").Range("DataTbl[[Phone]:[Phone2]]") ' DataTbl is 15 col x >1100 row
.Replace What:=" ", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:=")", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:="-", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:="(", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:=".", Replacement:=vbNullString, LookAt:=xlPart
End With
Range("DataTbl[[Phone]:[Phone2]]").NumberFormat = "[<=9999999]###-####;(###) ###-####"
With Sheets("Data").Range("DataTbl[Address]")
.Replace What:=" nw ", Replacement:=" NW ", LookAt:=xlPart
.Replace What:=" ne ", Replacement:=" NE ", LookAt:=xlPart
.Replace What:=" se ", Replacement:=" SE ", LookAt:=xlPart
.Replace What:=" sw ", Replacement:=" SW ", LookAt:=xlPart
End With
这似乎没有什么区别,如果On Error GoTo 0
被注释掉与否,并坦率地说,我还没有线索的Set r = Cells.Find(
...语句用于什么目的。
我不是100%肯定,但我认为,正常运行工作了一段时间后,我升级到10赢
'手动更改为正确的工作表'...'tSHeet = ActiveSheet.Name'猜测这就是为什么... – findwindow
注释出'错误恢复下一个'并看看错误发生的位置 –
'tSHeet = ActiveSheet.Name '只用于从别处调用时返回到调用表。注释出'On Error Resume Next'没有任何影响。 –