Вопрос № 90653: Здравствуйте уважаемые эксперты. Подскажите пожалуйста как в Ворде можно создать программу для перевода с латинского на кирилской алфавит. Стандартная макрос Найти-Заменит не подходит. Я бы хотель узнат с помощью selection.text
И еще: какие учебн...Вопрос № 90692: Уважаемые эксперты!
Подскажите пожалуйста:
есть данные (номера телефонов) в ячейках с A3 по A2000
есть мои данные в ячейках с C3 по С15000
Нужно сравнить все телефоны в столбце А со всеми телефонами
в столбце С, и если в ячейке С ...
Вопрос № 90.653
Здравствуйте уважаемые эксперты. Подскажите пожалуйста как в Ворде можно создать программу для перевода с латинского на кирилской алфавит. Стандартная макрос Найти-Заменит не подходит. Я бы хотель узнат с помощью selection.text
И еще: какие учебнике ест по VBA for Word. не для Excel'я
Заране спасибо
Отвечает: Ualife
Здравствуйте, Muhammedov Abdurohman!
Я вас не понимаю. Почему вам не подходит такой код как у меня в приложении? Может слишком большой код? Согласен. Вместо selection.text - selection.find.text.
Посмотрите книжку "Электронный учебник VBA для чайников" (заказать можно по сылке http://compebook.ru/cd/6.htm)
Приложение:
--------- Нет границ - есть лишь препятствия!
Ответ отправил: Ualife (статус: 1-ый класс)
Ответ отправлен: 09.06.2007, 11:08 Оценка за ответ: 3 Комментарий оценки: Я же сказал. Стандартная макрос не подходит. Я хотел создать свою версию программы, а не стандартного.
Вопрос № 90.692
Уважаемые эксперты!
Подскажите пожалуйста:
есть данные (номера телефонов) в ячейках с A3 по A2000
есть мои данные в ячейках с C3 по С15000
Нужно сравнить все телефоны в столбце А со всеми телефонами
в столбце С, и если в ячейке С встречается такой же телефон как и
в столбце А, то напротив совпавшего телефона столбца А, в столбце В
нужно вставить фразу "есть". Так как вручеую считать больше месяца,
то мне сказали написать макрос. Даже ума не приложу что именно писать,
так как у меня слабые знания в VisualBasic. Начал делать, поставил кнопку.
Написал для нее событие, но она делает совсем не то. Помогите, пожалуйста,
иначе придется анализировать вручную, а это адский труд.
С уважением Сергей
Отправлен: 09.06.2007, 11:42
Вопрос задал: Worsvch (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Felix
Здравствуйте, Worsvch!
Не нужно использовать ВБА. Используйте функцию ВПР:
1. Отсортируйте столбец А по возрастанию
2. в ячейке В3 пишете формулу: =ЕСЛИ(ВПР(C3;$A$2:$A$2000;1)=C3;"есть";"")
3. копируете формулу вниз до последней заполненной ячейки в столбце С (B1500).
Ответ отправил: Felix (статус: 1-ый класс)
Ответ отправлен: 09.06.2007, 12:32 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо! Хоть функция и пропускает часть телефонов, но думаю в дальнейшем мне Ваша подсказка пригодится еще не раз.
Отвечает: Ualife
Здравствуйте, Worsvch!
Смотрите приложение, там код макроса.
Если что-то не понятно то пишите на mailto:ua.life@mail.ru
Приложение:
--------- Нет границ - есть лишь препятствия!
Ответ отправил: Ualife (статус: 1-ый класс)
Ответ отправлен: 09.06.2007, 15:01 Оценка за ответ: 5 Комментарий оценки: Хороший ответ!
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Worsvch!
Вариант ответа от Felix, самый подходящий для решения Вашей задачи не прибегая к VBA. Если же Вы решили "познакомиться с VBA", предлагаю маленький кусочек кода с помощью которого так же можно решить Вашу задачу.
Удачи.
Евгений.
Приложение:
Ответ отправил: Тесленко Евгений Алексеевич (статус: 8-ой класс)
Ответ отправлен: 09.06.2007, 21:38 Оценка за ответ: 5 Комментарий оценки: Спасибо! Все таки я написал его сам, код у меня получился другой и работает. Но Ваш вариант мне тоже интересен
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Worsvch!
Sub Sravn()
Dim lA As Long
Dim sh As Object, stat As String
Set sh = Excel.Sheets(1)
sh.Activate
stat = Application.StatusBar
Application.StatusBar = "Подождите, пожалуйста..."
DoEvents
Application.ScreenUpdating = False 'Это для того, чтобы экран до окончания не перерисовывался - так мы экономим некоторое кол-во времени
For lA = 3 To 15000 'У Вас 15000
If Cells(lA, 1) = Cells(lA, 3) Then 'Смотрим, если А??=С??, то...
Cells(lA, 2) = "--- Есть ---" '...в В?? пишем слово "--- есть ---"
End If
Next lA
Application.StatusBar = stat
Application.ScreenUpdating = True 'Обновляем экран
Set sh = Nothing
End Sub
Может еще как-то оптимизируете по скорости, но, по-моему, 1,5 секунды удовлетворительный результат (у меня на машине все отрабатывает за 1316 мс.)
--------- Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 10.06.2007, 14:48 Оценка за ответ: 5 Комментарий оценки: Спасибо большое!