|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
08.10.2008, 22:32 | #1 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Удаление строк в зависимости от заливки
В работе использую следующий порядок:
1. Мне присылают остатки на складе базы, которые видимо импортируют из 1С; 2. Я выбираю из них нужный товар, подсвечивая заливкой нужные строки и изменяя столбец с количеством; 3. Удаляю все неподсвеченные строки (ну, кроме заголовка, хотя его тоже можно выделить) 4. Сформированный т.о. заказ отправляю обратно на склад Теперь вопрос: Можно ли удалять ненужные строки через макрос, или хотя бы перенести подкрашенные в чистый лист (а старый удалить). Если у кого-то есть подобный макрос, то большая просьба закомментировать все действия, потому что иначе мои три класса приходской школы не позволят подогнать его под себя. P.S. Желательно, чтобы сохранялись ячейки определённого цвета (напр. красного), т.к. в файле обычно бывает своя подсветка (жёлтый, зелёный и т.п.). Заранее спасибо! |
09.10.2008, 06:48 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Следующий код удалит все красные строки.
Работает так: объявляем переменную. Запрещаем обновление экрана (чтобы не мигал). Организуем цикл от последней заполненной строки активного листа до первой ячейки (снизу вверх) с шагом -1. Проверяем, если код цвета фона строки равен 3 (красный), то удаляем эту строку. Все. Код:
Чем шире угол зрения, тем он тупее.
|
10.10.2008, 16:39 | #3 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
|
10.10.2008, 18:17 | #4 |
Пользователь
Регистрация: 10.09.2008
Сообщений: 37
|
2 Scolopendra
Чтобы удалить все строки, заливка которых отлична от красного цвета, в коде надо проставить знак неравенства "<>" : If Rows(i).Interior.ColorIndex <> 3 Then Rows(i).Delete 2 SAS888 На авторские права не претендую (если помешала, извините) + большое спасибо за ScreenUpdating - никак не могла вспомнить |
10.10.2008, 19:33 | #5 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Так просто! Спасибо, вы мне сэкономили кучу времени. А я за деревьями леса не увидел.
А можно до кучи, без открытия новой темы, спросить? Всё по тем же заказам... Записал макрос подсветки строки с выделенной ячейкой: Shift + Пробел, Заливка, всё . Повторяю процесс по F4 (Повтор). Ну удобно мне так. Но когда выполняю макрос, а затем перехожу на новую строку и нажимаю F4 иногда подсвечивает не всю строку, а только выделенную ячейку. В чём может быть проблема? Пользуюсь Excel 2003. |
11.10.2008, 08:30 | #6 |
Пользователь
Регистрация: 10.09.2008
Сообщений: 37
|
Могу ошибаться, но все же...
Мне кажется, по вашему описанию, что макрос у вас записан на заливку выделенной области, т.о. по F4 вы закрашиваете то, что выделили. Когда-то выделяется строка, а когда-то только ячейка... Можете выложить то, что записано в вашем макросе? Для примера: Sub Макрос1() With Selection.Interior .ColorIndex = 43 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With End Sub |
19.10.2008, 20:11 | #7 | |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
maxic спасибо за участие.
Макрос я слегка корректировал методом проб и ошибок и на данный момент он у меня выглядит следующим образом: Цитата:
Думаю тему можно закрыть. Всем спасибо. |
|
24.10.2008, 00:16 | #8 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
С закрытием темы я поторопился. Возник ещё один вопрос.
При выполнении макроса с оператором If Rows(i).Interior.ColorIndex <> 3 сохраняются все цвета, не только красный. Видимо нужен другой оператор. А насчёт, второго вопроса (повтор по F4) — вот код: Код:
|
24.10.2008, 06:54 | #9 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
А что в конце концов нужно-то?
Посмотрите вложение. При нажатии Shift+пробел - выделяется строка на которой находится курсор и автоматом окрашивается в красный цвет. При повторном нажатии - обесцвечивается. После выделения необходимых строк - нажать F2, или запустить макрос "DeleteRows". Будут удалены все строки, кроме красных.
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 24.10.2008 в 06:56. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удаление строк | alexk | Microsoft Office Excel | 24 | 15.02.2011 08:34 |
Удаление строк | Dr.Badnezz | Общие вопросы Delphi | 1 | 07.10.2008 15:22 |
удаление строк | Dime_x | Microsoft Office Excel | 2 | 07.10.2008 13:38 |
Запрет на удаление строк и столбцов | Shavminator | Microsoft Office Excel | 2 | 12.01.2008 13:36 |
Удаление строк массива по условию | Lexakazanskij | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 12.09.2007 20:32 |