Тема: Капризничает функция Replace

В ответ на попытку запустить строчку кода:

NewString = Replace("ABCDE", "AB", "11")

отладчик выдает:
Wrong number of arguments or invalid property assigment
У меня есть подозрение, что интерпретатор кода путает функцию  Replace из библиотек VBA с функцией Replace из библиотеки AutoCAD для Dictionary типа:

object.[b]Replace[/b] Name, NewObject 

Возможно, это паранойя, но! Как говорят в народе, если вы параноик, это не значит, что никто не собирается вас преследовать...
Может кто-то натыкался на подобную фигню и нашел решение?
Спасибо.

Re: Капризничает функция Replace

> LeonidSN
Иногда бывает VBE капризничает если
не объявлены явно
Попробуй как обычно:

Dim NewString As String, _
    OldString As String, _
    RepString As String, _
    FindString As String
NewString = Replace(OldString, FindString, RepString)

~'J'~

Re: Капризничает функция Replace

> Fatty
Да нет, все мои переменные были объявлены, чин-чинарем. Это уже от отчаяния нарисовал голые строки. Ей-богу, не пойму в чем дело. До сих пор все работало...

Re: Капризничает функция Replace

> LeonidSN
Не могу добиться такой ошибки, впрочем,
может так будет спокойней:
newstring = VBA.Replace("ABCDE", "AB", "11")
~'J'~

Re: Капризничает функция Replace

> Fatty
Спасибо, дружище!
Конструкция  VBA.Replace работает как часы.
Что является косвенным подтверждением правоты моих подозрений. > LeonidSN (2006-11-06 19:58:36)
Может кому-то этот опыт пригодится.

Re: Капризничает функция Replace

> LeonidSN
А все таки интересно было бы докопаться
Истина где-то там...
:)

Re: Капризничает функция Replace

По моему опыту это банальный конфликт имён. Несколько функций из VBA модуля Strings имеют неуникальное имя (Len, Left, ...). Конфликт имён лечится только полным именованием. Здесь я бы обращался к этим функциям Strings.Len ...(собственно так и делаю). Ссылаться на VBA минуя Srings мне кажется не совсем правильно.

Re: Капризничает функция Replace

> JS
Ёлы-палы !!!
И действительно, ну, голова
Моё уважение :)

Re: Капризничает функция Replace

> JS
Несколько функций из VBA модуля Strings имеют неуникальное имя (Len, Left, ...).
Ваша реплика заставила меня проверить вроде бы уже давно известные и многократно используемые функции... Действительно, некоторые имена неуникальны. Спасибо за подсказку, впредь будем осторожнее.

Re: Капризничает функция Replace

JS пишет:

Ссылаться на VBA минуя Srings мне кажется не совсем правильно

Если в редакторе набрать VBA. (с точкой), то в подсказке выскакивают не только Strings, но и все функции VBA. Поэтому, я думаю, что писать VBA тоже правильно.
>All
У меня дебагер останавливался в Excel только на некоторых машинах. И только на функциях преобразования срок. Типа Left, Mid. На функциях, возвращающих числа (Len, InStr) остановок я не замечал. Лечил "префиксом" VBA.
Эти остановки, вероятно, из-за некорректной установки Excel или Windows. Потому что в сообщениях говорилось, кажется, о том, что не можно найти функцию. Или что-то в этом роде. Сейчас не помню точно.
Не думаю, что это конфликт имен. Left, например, я применял только для одной цели, как функцию для работы со строками. Других Left у меня не было, а остановки дебагера были.
На чистом VB (не VBA) остановок ни разу не было.
Это так. В общую копилку.