2013-06-10 3 views
0

Я бы хотел, чтобы мой код автоматически заменил несколько слов из списка другими словами. До сих пор я нашел, как заменить одно слово другим. Например, если я хочу заменить слово «Авеню» словом «Ave.», Я использую:Excel - VBA: автоматически заменяет слова другим (с использованием What/Replacement)

Worksheets("sMain").Columns("D").Replace _ 
What:="Avenue", Replacement:="Ave.", _ 
SearchOrder:=xlByColumns, MatchCase:=True 

Это работает. Теперь я хотел бы сделать его более эффективным, заменив несколько слов на другое. Например, если я набираю «Avenue» или «avenue» или «ave», он будет заменен на «Ave.». Я пытался это, но без успеха (ошибка компиляции):

Worksheets("sMain").Columns("D").Replace _ 
What:="Avenue", Replacement:="Ave.", _ 
What:="avenue", Replacement:="Ave.", _ 
What:="ave.", Replacement:="Ave.", _ 
SearchOrder:=xlByColumns, MatchCase:=True 

Любая идея о том, как сделать это возможным? Благодаря

+0

3 заменить операторы первой формы? ..... –

+0

Итак, если во входной записи пользователь пишет «Avenue» или «avenue», или даже «ave». (который я не могу предсказать, это зависит от его собственных привычек), моя программа просто определит это как «Ave.» которое я использую в своей базе данных. – Phalanx

ответ

2

Вы можете сделать это в цикле, как этот

ary = Array("Avenue", "avenue", "ave.") 
For Each wd In ary 
    Columns("D").Replace What:=wd, Replacement:="Ave.", SearchOrder:=xlByColumns, MatchCase:=True 
Next 

Вы также можете, как установить MatchCase Ложь, как вы не будете нуждаться в два верхних и нижний регистр «проспект» 'ы.

+0

Спасибо за помощь, в принципе она должна работать, но я испытываю самую странную проблему при ее попытке. Когда я набираю «проспект» или «проспект», у меня неправильная замена. Он заменен на «Ave ..» вместо «Ave.» с еще одним ".". С другой стороны, когда я набираю «ave», он отлично работает. Так странно. – Phalanx

+1

Убедитесь, что ваши заменяющие строки также не подстроки. Например, если вы заменяете «ave» на «ave». то вещи, которые были первоначально «аве». станет «ave ..» – Wild138

+0

Это действительно так, спасибо! Последний вопрос, это не очень важно, поскольку объявление переменных не является обязательством, но какова переменная для ary и wd? Я попробовал Dim ary As Array, но в списке вариантов нет такого элемента, как массив. И я пробовал wd как String, но это не сработало. – Phalanx

Смежные вопросы