VBA Excel Replace не всегда работает - PullRequest
3 голосов
/ 05 мая 2011

ОК, это действительно беспокоит меня сейчас.

В конце концов я хочу добавить в этот код некоторые if и else, но сейчас у меня просто есть следующий код.

' resize string if nessuary  
sname = Replace(arr(x), "ASR Port Provisioning General Questions", "General Questions")  
sname = Replace(arr(x), "ASR Port Provisioning", "ASR PP")  
sname = Replace(arr(x), "ASR Standard Network Device Config Changes", "Std Config Change")  
If Len(sname) > 30 Then sname = Right(sname, 15)  

arr () имеет элементы

"ASR Port Provisioning General Questions", 
"ASR Port Provisioning",
"ASR Standard Network Device Config Changes"

Теперь для «Изменений конфигурации стандартного сетевого устройства ASR» он работает и сокращается до «Std Config Change»

Но для двух других они пропущены и не заменены?

Теперь я знаю, что они содержат информацию о corrent, я даже пытался вывести arr (x) для формирования строки поиска, но этого по-прежнему не происходит :)

Ладно, кажется, нужно было привести в порядок, однажды завернутый в if и elses

Если InStr (arr (x), «Порт ASR»), то

    If InStr(arr(x), "ASR Port Provisioning General Questions") Then
    sname = "General Questions"
    Else
    sname = Replace(arr(x), "ASR Port Provisioning", "ASR PP")
    End If

    Else
    sname = Replace(arr(x), "ASR Standard Network Device Config Changes", "Std Config Change")
End If

Отлично работает !! Кто-нибудь знает, почему три замены заменяют друг друга?

1 Ответ

1 голос
/ 05 мая 2011

В вашем первом кодовом блоке проблема в том, что вы сбрасываете значение sname при каждом вызове, и, таким образом, только последний «залипает».Вам либо нужен другой массив для хранения всех замененных значений, либо вы можете обновить существующий массив, либо вы можете выполнять свою работу над каждым элементом после выполнения замены.Нам нужно больше узнать о том, что вы делаете с данными.

Во втором блоке кода ASR Port не должно быть в строке arr(x), и поэтому он выполняет только оператор Else.

Полагаю, вы пытаетесь сделать что-то вроде:

If InStr(arr(x), "ASR Port Provisioning General Questions") Then
    sname = Replace(arr(x), "ASR Port Provisioning General Questions", "General Questions")  

ElseIf InStr(arr(x), "ASR Port Provisioning") Then
    sname = Replace(arr(x), "ASR Port Provisioning", "ASR PP")  

Else
    sname = Replace(arr(x), "ASR Standard Network Device Config Changes", "Std Config Change") 

End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...