Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2013, 19:10   #1
Tigranik
Пользователь
 
Регистрация: 29.01.2013
Сообщений: 17
По умолчанию Найти и заменить #ССЫЛКА!

Добрый день столкнулся с такой проблемой!

Нужно заменить ошибку #ССЫЛКА! на "Лист1!" если делать это стандартными средствами Excel то все прекрасно получается! А вот сделать то же самое VBA мне ни как не удается!

Я уж понял что #ССЫЛКА! должна записываться как #REF!, но все равно код не работает!

так же мне удалось выяснить что походу загвостка в
Replacement:="Лист1!"
если убрать ! знак т.е. записать
Replacement:="Лист1"
то замена проходит... но получиться ерунда! В чем дело? Срочно прошу помощи!

Экспериментальный файл прилагаю ниже:
http://yadi.sk/d/0Cp9Zv8c7fBHw

Код:
Sub Макрос1()
    Cells.Replace What:="#ССЫЛКА!", Replacement:="Лист1!", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
Tigranik вне форума Ответить с цитированием
Старый 07.08.2013, 19:54   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Sub www()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, 16)
        c.Formula = Replace(c.Formula, "#REF!", "Лист1!", 2, 1, vbTextCompare)
    Next
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 07.08.2013, 21:18   #3
Tigranik
Пользователь
 
Регистрация: 29.01.2013
Сообщений: 17
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Код:
Sub www()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, 16)
        c.Formula = Replace(c.Formula, "#REF!", "Лист1!", 2, 1, vbTextCompare)
    Next
End Sub
В результате работы, этого макроса у меня в место формулы в ячейке получается текстовое значение "Лист1!"

Блин... Вообще только сейчас заметил, что эксель проглатывает часть формулы, т.е. изначально было "=лист1!С1+лист1!С2"
после удаления листа1 формуле получается следующие: "=#ССЫЛКА!С1+#ССЫЛКА!С2" в это момент я и хотел восстановить содержимое.... НО
после перезапуска формула преобразуется: "=#ССЫЛКА!+#ССЫЛКА!" и теперь даже если заменить содержимое все равно получиться вата... Извиняюсь за беспокойство.

Последний раз редактировалось Tigranik; 07.08.2013 в 21:42.
Tigranik вне форума Ответить с цитированием
Старый 07.08.2013, 21:39   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вы серьезно? А ну вставьте в ячейку =Лист1! Что получим? А ничего, Экс этого не позволит. Или =Лист1 - получим другую ошибку #ИМЯ. Можем вставить только в кавычках(а какой в этом смысл?):
Код:
Sub www()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, 16)
        c.Formula = Replace(c.Formula, "#REF!", """=Лист1!""", 2, 1, vbTextCompare)
    Next
End Sub
Ну или:
Код:
c.Formula = Replace(c.Formula, "#REF!", "'=Лист1!", 2, 1, vbTextCompare)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 07.08.2013 в 21:41.
kuklp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти и Заменить с гиперссылкой Sagir Microsoft Office Excel 0 22.06.2012 11:36
Правка Найти/Заменить лилу1986 Microsoft Office Excel 15 14.08.2010 20:54
найти и заменить smallfish Microsoft Office Word 2 15.05.2010 22:50
Найти и заменить Shouldercannon Общие вопросы Delphi 0 12.04.2010 01:33