|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.07.2010, 21:26 | #1 |
Регистрация: 22.07.2010
Сообщений: 9
|
Макрос поиска текста на листе
Всем доброго времени суток!
Посмотрел по форуму, но не нашел решения своей задачи. Мне нужно написать макрос, который ищет текст из буфера на листе, который может встретиться не однократно, а найдя его, выбирает последнюю найденную ячейку. Попробовал в автоматическом режиме, но сам момент поиска из макроса вылетает. Помогите, пожалуйста |
23.07.2010, 10:57 | #2 | |
Регистрация: 22.07.2010
Сообщений: 9
|
Немного конкретизирую задачу.
Есть таблица с 2-мя листами "все" и "запчасти". Нужно по номеру запчасти из столбца 2 листа "запчасти", найти её на листе "все", причем если их несколько, то последнюю. Взять цену за единицу из листа "все" и прописать её в столбце справа от цены этой запчасти на листе "запчасти". Я попробовал это сделать автоматически, но получил только вот это: Цитата:
Подскажите, пожалуйста! |
|
23.07.2010, 13:50 | #3 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 472
|
можно, например, так, см. вложение
Нажмите кнопку "Выполнить" |
23.07.2010, 14:29 | #4 |
Регистрация: 22.07.2010
Сообщений: 9
|
Спасибо, EugeneS!
Только вот почему-то при переносе макроса из примера в рабочую книгу он начинает некорректно работать
Но, по крайней мере, задано направление мысли, добью вечером |
23.07.2010, 15:28 | #5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Вроде ошибка есть, проверьте, надо +2 добавить:
Range([j2], Cells(UBound(spairparts)+2, "j")).Value = WorksheetFunction.Index(spairparts, 0, 10) P.S. Там чуть иначе надо, UsedRange всё портит, короче есть ошибки в конце диапазона, надо доработать.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 23.07.2010 в 16:00. |
23.07.2010, 16:23 | #6 |
Регистрация: 22.07.2010
Сообщений: 9
|
Спасибо, буду разбираться!
|
28.07.2010, 15:32 | #7 |
Регистрация: 22.07.2010
Сообщений: 9
|
Спасибо, EugeneS, Hugo121
Долго разбирался в программе, в большей степени по причине отсутствия нормального справочника, но всё-таки её добил
Выкладываю то, что получилось в итоге |
29.07.2010, 07:06 | #8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Можно гораздо проще:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 29.07.2010 в 07:40. |
29.07.2010, 09:53 | #9 |
Регистрация: 22.07.2010
Сообщений: 9
|
Спасибо, SAS888, красиво! Нет предела совершенству!
Но всё, что делается между For и Next в этом примере для меня далеко от понимания. Кстати, подскажите, что означает Код:
Код:
Код:
|
29.07.2010, 11:12 | #10 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
1. Квадратные скобки компилятор VBA понимает как обращение к ячейке (диапазону). Так, например, вместо Columns("B:B") можно использовать [B:B], вместо Range("A1:D10") использовать [A1:D10] и т.д. Также и для именованных ячеек (диапазонов). Согласитесь, что так просто короче.
2. В справке по VBA Excel очень подробно описан метод Find. Посмотрите. Причем, синтаксис VBA допускает либо простое перечисление параметров через запятую (очередность строго определена), либо указывать имя параметра явно. В первом случае, параметры, используемые по умолчанию можно опустить (пустые значения между запятыми), в последнем случае, их просто не нужно указывать. Так, например, строку кода Код:
Код:
3. И еще. Обратите внимание, что макросу присвоен статус Private. Это для того, чтобы имя макроса не было видно в списке макросов. Во-первых, это ни к чему, во-вторых, т.к. макрос запускается по нажатию кнопки, то в это время, естественно, активным является лист с кнопкой, поэтому, прописывать в коде активацию листа не потребуется, в-третьих, т.к. макроса нет в списке, его невозможно запустить при другом активном листе. Важно: для того, чтобы макрос, имеющий статус Private был доступен из другого модуля (в нашем случае, из модуля листа), в коде вызова макроса используется метод Run. Т.е. если записать Код:
Код:
Пользуйтесь help-ом по VBA, имеющимся в Excel. Желаю удачи.
Чем шире угол зрения, тем он тупее.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос для поиска совпадений | Dealaxer | Microsoft Office Excel | 18 | 26.09.2012 17:33 |
Макрос Excel поиска и вставки | igorok | Microsoft Office Excel | 2 | 08.07.2009 18:49 |
Как выполнить макрос на защищенном листе | Gennady_58 | Microsoft Office Excel | 3 | 18.04.2009 10:31 |
Макрос для обновления формул вручную только в одном листе | Neo007 | Microsoft Office Excel | 7 | 26.09.2008 18:17 |
Макрос для поиска/замены | Davidoff | Microsoft Office Excel | 1 | 20.01.2007 16:01 |