![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.07.2010
Сообщений: 9
|
![]()
Всем доброго времени суток!
Посмотрел по форуму, но не нашел решения своей задачи. Мне нужно написать макрос, который ищет текст из буфера на листе, который может встретиться не однократно, а найдя его, выбирает последнюю найденную ячейку. Попробовал в автоматическом режиме, но сам момент поиска из макроса вылетает. Помогите, пожалуйста |
![]() |
![]() |
![]() |
#2 | |
Регистрация: 22.07.2010
Сообщений: 9
|
![]()
Немного конкретизирую задачу.
Есть таблица с 2-мя листами "все" и "запчасти". Нужно по номеру запчасти из столбца 2 листа "запчасти", найти её на листе "все", причем если их несколько, то последнюю. Взять цену за единицу из листа "все" и прописать её в столбце справа от цены этой запчасти на листе "запчасти". Я попробовал это сделать автоматически, но получил только вот это: Цитата:
Подскажите, пожалуйста! |
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 472
|
![]()
можно, например, так, см. вложение
Нажмите кнопку "Выполнить" |
![]() |
![]() |
![]() |
#4 |
Регистрация: 22.07.2010
Сообщений: 9
|
![]()
Только вот почему-то при переносе макроса из примера в рабочую книгу он начинает некорректно работать
![]() Но, по крайней мере, задано направление мысли, добью вечером ![]() |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Вроде ошибка есть, проверьте, надо +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. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 22.07.2010
Сообщений: 9
|
![]()
Спасибо, буду разбираться!
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 22.07.2010
Сообщений: 9
|
![]()
Долго разбирался в программе, в большей степени по причине отсутствия нормального справочника, но всё-таки её добил
![]() Выкладываю то, что получилось в итоге |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Можно гораздо проще:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 29.07.2010 в 07:40. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 22.07.2010
Сообщений: 9
|
![]()
Спасибо, SAS888, красиво! Нет предела совершенству!
Но всё, что делается между For и Next в этом примере для меня далеко от понимания. Кстати, подскажите, что означает Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#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 |