2013-07-10 10 views
3

Я должен заменить один символ другим в файле excel.Заменить функцию в Excel VBA для диапазона ячеек

Я использовал следующую функцию replace, но из-за превышения ограничения 1024 символов в некоторых ячейках она останавливается.

Sub Replace() 

    With Sheets("Sheet1").Range("A1:A629") 

     .Cells.Replace ",", ";", xlPart, xlByRows, False 

    End With 

End Sub 

Я должен знать Substitute функция будет делать

Cells(1, 2) = "=SUBSTITUTE(A1,"","","";"")" 

Но как я могу использовать, что для диапазона ячеек.

Спасибо

ответ

5

Попробуйте это

Sub Replace() 

    Dim rng As Range, cell As Range 
    Set rng = Sheets("Sheet1").Range("A1:A629") 

    For Each cell In rng 
     cell = WorksheetFunction.Substitute(cell, ",", ";") 
    Next 
End Sub 

enter image description here

+0

Спасибо, Сантош, это действительно работало – SMPH

4

Попробуйте это. Обратите внимание, что он использует функцию VBA Replace, поэтому вам нужно переименовать свою подпрограмму «Заменить».

Sub ReplaceText() 

    For Each c In Sheets("Sheet1").Range("A1:A629").Cells 

     c = Replace(c.Value, ",", ";") 

    Next c 

End Sub 

Примечание: Это будет работать, только если у вас есть значения в ячейках, без формул. Потому что Excel имеет формулу length limit of 1024 characters. Но если у вас есть эта конкретная ошибка, ваши ячейки не должны быть формулами.

+0

Спасибо за ваш ответ, это дает 'Compile ошибке: неверное числу аргументов или присвоение имущества недействительного'. Но аргументы должны быть оштрафованы в соответствии с функцией, которую я считаю. – SMPH

+0

Странно, это побежало для меня в Excel 2010. Вы сменили имя sub на 'ReplaceText'? Какая версия Excel у вас есть? – psiphi75

+0

Я использую 2003. Да использовала подпрограмму как «ReplaceLengthyText». Это может быть проблема с версией? – SMPH

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