Я выполняю следующий макрос в течение нескольких лет без проблем до недавнего времени.excel vba replace failure
За последние несколько недель мне пришлось вручную перейти на соответствующий лист, прежде чем он сработает. Сегодня он прекратил это делать, поэтому я прошел через него &, увидев, что он выходит из первого оператора замены, есть ли данные для замены или нет.
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%, но я думаю, что функция работала должным образом на некоторое время после того, как я повышен до Win 10.
'вручную изменить на правильный лист' ...' tSHeet = ActiveSheet.Name' угадывание, вот почему ... – findwindow
закомментировать «on error resume next» и посмотреть, где происходит ошибка –
'tSHeet = ActiveSheet.Name 'используется только для возврата к вызывающему листу при вызове из другого места. Комментирование 'On Error Resume Next' не влияет. –