0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
||||||
1 | ||||||
Создание простого переводчика таблицы01.09.2010, 17:52. Показов 2654. Ответов 14
Метки нет (Все метки)
Гуру, помогите плиз ещё разок.
Я честно пытался, читал, читал, но опять ничего не вышло, выдаёт какую то ошибку, а что делать не знаю. Итак, задача для вас довольна проста: Прогон текста одной страницы со значениями другой (см. приложение) На первой странице есть какой-то текст, а на второй две колонки, в одной этот же текст, а в другой его перевод. Надо чтобы макрос нашел этот текст и заменил его в искомой графе, если же его НЕТ, то пропустил ячейку (В идеале было бы не плохо если бы он её выделил цветом). Объем текста на первой странице переменный. Чтобы доказать что я пытался вот что у меня получилось (естественно не работающий вариант):
0
|
01.09.2010, 17:52 | |
Ответы с готовыми решениями:
14
Создание простого теста Создание простого теста для VB! Создание переводчика Создание переводчика |
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
|
02.09.2010, 10:30 [ТС] | 2 |
Млин, я уже какими только вариантами не пытался подставить, но все равно в упор не хочет сравнивать, просто пропускает. Что я делаю не так?
Люди подскажите какая функция проверяет текст на соответствие?
0
|
02.09.2010, 11:03 | 3 | ||||||||||
В коде есть ошибка:
Вообще нужно попробовать сделать так:
0
|
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
|
02.09.2010, 11:11 [ТС] | 4 |
Ненаходит
просто пропускает и продолжает дальше искать
0
|
02.09.2010, 11:47 | 5 | |||||
Да. Теперь разобрался что нужно.
Можно начать так:
1
|
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
|
02.09.2010, 12:00 [ТС] | 6 |
Спасибо за помощь, но я так и не знаю как их сравнить, т.е. массив в принципе и прошлый работал (хотя твой наверно лучше), а вот сравнение у меня не получилось?
Пожалуйста напиши как будет время.
0
|
496 / 130 / 19
Регистрация: 30.03.2010
Сообщений: 224
|
||||||
02.09.2010, 12:55 | 7 | |||||
а вот есче мой вариант
1
|
02.09.2010, 13:00 | 8 | |||||
Вот другой вариант:
1
|
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
|
02.09.2010, 15:02 [ТС] | 9 |
ОГРОМНОЕ ВСЕМ СПАСИБО!!!!
Код Аналитика почему то не работает ставит что-то типа "#NAME?", плюс массив всегда разный. А код Analyst - работает, но я вообще не могу понять как он работает ))) Я взял вариант petr-sev, т.к. код - понятен и в принципе прост. Однако в обоих вариантах нашелся баг: У Analyst система выделяет пустую строчку, как если бы она не нашла соответствия. А у petr-sev если система находит пустую клетку в Sheet1 она в неё вставляет значение первой строки второго столбца из Sheet2. Есть мысль как это исправить? Я сегодня ещё посижу подумаю, но если до завтра не придумаю, то не могли бы вы ещё помочь? Кстати идея аналитика по поводу добавления в словарь, очень хорошая, однако проблема в том что файлик который я с вашей помощью готовлю будут использовать люди без знания языка. Поэтому функцию может и стоит прописать, но не как условие, а как дополнение, но это конечно усложняет задачу которую я итак без вас решить не могу. И ещё вопрос, есть ли функция проверки языка ввода? Ну т.е. если язык русский уже то находить перевод не надо? P.S. Ещё раз огромное спасибо. С уважением, Женя
0
|
496 / 130 / 19
Регистрация: 30.03.2010
Сообщений: 224
|
||||||
02.09.2010, 15:15 | 10 | |||||
добавлена проверка пустой строки
0
|
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
|
03.09.2010, 07:44 [ТС] | 11 |
Все работает. Спасибо большое, но ещё одни вопрос на эту же тему:
Какой размер у параметра Range? Дело в том что текст: "Без присмотра разрешается оставлять только ту технику, которая завязана на систему выключения, и которая пригодна для эксплуатации без присмотра. Если техника не пригодна для эксплуатации без присмотра, то такое машинное оборудование следует проверять на регулярной основе." он не "переводит", и ругается: "Run time error 13: Type mismatch" Но если текст сократить, то "переводит", т.е. получается что есть ограничение на размер текста. В книжке написано Object = 4 byte = Any object reference. Long = 4 byte = от -2 147 483 648 до 2 147 483 647 А это очень много, т.е. текст должен поместиться, но ошибка возникает. Можно её как то решить? Добавлено через 2 часа 34 минуты Сорри не Range, а Object
0
|
496 / 130 / 19
Регистрация: 30.03.2010
Сообщений: 224
|
|
03.09.2010, 10:53 | 12 |
Дело не в размере Range или Object, а в том, что для перевода использован метод Find (поиск)
а поиск (в том числе и поиск вручную) в Excel'е работает только для строк длиной не более 256 символов
0
|
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
||||||
03.09.2010, 14:26 [ТС] | 13 | |||||
Тогда придется использовать вариант Analyst, но тогда остается вопрос пропуска пустых ячеек. В принципе я заменил заливку на изменение цвета текста, и т.к. клетки пустые то их и не видно, но может можно как то правильнее сделать?
Я попробовал по аналогии вставить: If VDataArr(iRow, iColomn).Text <> "" Then Но система это принимать не хочет "Script out of range". Подскажете как решить? Вот получившийся код:
0
|
0 / 0 / 0
Регистрация: 29.08.2010
Сообщений: 18
|
|
06.09.2010, 09:20 [ТС] | 14 |
Чё то я не нашел решения. Помогите плиз.
0
|
06.09.2010, 09:50 | 15 |
Попробуйте задать условие так:
If VDataArr(iRow, iColomn) <> Empty Then Мой код не сможет перевести предложение потому, что вы не указывали в условии необходимость это сделать. Для решения этой задачи необходимо модифицировать код!
1
|
06.09.2010, 09:50 | |
06.09.2010, 09:50 | |
Помогаю со студенческими работами здесь
15
Создание онлайн переводчика на сайт Создание переводчика под java создание словаря-переводчика он-лайн Хватит ли простого добавления таблицы? Создание простого калькулятора Создание простого бота Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |