|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
07.02.2008, 16:27 | #1 |
Пользователь
Регистрация: 06.02.2008
Сообщений: 42
|
Макрос: удаление строк если в колонке А число 5
Народ хелп!
Как написать макрос на следующую тему: удалить всю строку, если в колонке A, в ячейке формула пишет цифру 5. Есть пакинг лист в который вносятся артикулы, количество, вес, цена и т.д. Артикулы разносятся по кодам ТН ВЭД. Пакинг сделан на весь ассортимент, когда копируешь заказ строчки по части артикулов не заполняются, так как их нет. У меня стоит выделение этих пустых строк желтым цветом, потом я их удаляю. Иногда приходиться удалять целый блок кода ТН ВЭД. В стоблике А стоит формула если столбик с количеством =0 то 5, иначе 0. То есть цифра 5 появляется в строчке артикула если его нет в заказе и его количество стоит ноль. Так же цифра 5 появляется в итогах по каждому коду, и если все значения нулевые этот итог тоже удаляется. Очень хочется чтобы макрос сам просматривал столбец А и если бы обнаруживал там число 5, то удалял бы всю строку. см. приложенный файл. Спасибо! |
07.02.2008, 18:09 | #2 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 51
|
Удаляло
Если я правильно понял формулировку, то можно это сделать так (см. модуль1).
Правильно? PS: Можно и без массива обойтись, это только для контроля "watch"
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
|
07.02.2008, 19:01 | #3 |
Пользователь
Регистрация: 06.02.2008
Сообщений: 42
|
СПАСИБО ОГРОМНОЕ!!!! РАБОТАЕТ!!! УРа!!!!!!!!!!!!
Как бы научиться это все писать... ??? Такого бы удалось новоротить!!!! ))) |
08.02.2008, 19:49 | #4 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
вот в этой ветке похожий вопрос
http://www.programmersforum.ru/showthread.php?t=13962 если Rows поменять на Columns? И ещё вопрос, зачем нужно брать функцию от функции? WorksheetFunction.Columns(ws.Column s(i)) ws.Columns(i) - указывает номер столбца WorksheetFunction.Columns - что делает? Код не работает Код:
Последний раз редактировалось Leanna; 08.02.2008 в 19:55. |
09.02.2008, 07:55 | #5 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 51
|
Функционишник
WorksheetFunction.Columns не делает ничего, ибо такой функции у объекта WorksheetFunction не существует!
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
|
09.02.2008, 12:03 | #6 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
Хорошо тогда в этом примере,
ws.Rows(i) - указывает номер ряда WorksheetFunction.Rows - что делает? |
09.02.2008, 17:32 | #7 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 51
|
Откуда пример этот дурацкий взяли? Хотя и не по теме вопрос, постараюсь объяснить что к чему. В Visual Basic for Applications (далее -"VBA") существует такое понятие, как библиотеки классов. Эти готовые библиотеки Microsoft создает и с новой версией обновляет для облегчения программирования своих приложений (Applications) на Visual Basic. Их все вы можете посмотреть нажав в редакторе "F2" tools - > References. Для Excel предусмотрена своя библиотека, называемая "Microsoft Excel Object 11.0 Library" (версии могут разниться). Так вот, в этой библиотеке существует упомянутый вами класс (или объект) WorksheetFunction, членами которого являются ряд свойств (рука с карточкой), функций (зеленый квадратик). Выражение WorksheetFunction.Sum, например, позволяет обратиться к функции Sum, но WorksheetFunction.Rows выдаст ошибку, по-моему 438, поскольку объект WorksheetFunction не поддерживает свойство Rows, оно является членом объекта Worksheet(рабочий лист), либо свойстом другого свойства, никак без тавтологии, назначение которого - обозначить рабочий лист - ActiveSheet, например, далее задаем для свойства Rows координату Rows(номер строки), либо не задаем, тогда мы обращаемся ко всем ячейкам рабочего листа. Worksheet("Лист1").Rows.Select - данная конструкция выделяет все строки листа 1. Select - функция "выбор", она разнопланова, может применяться как к Rows, так и к Worksheet. Worksheet("Лист1").Select, например, делает лист 1 активным, другими словами "нажимает" на вкладку Лист 1. Так что пробуйте и экспериментируйте.
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
|
10.02.2008, 09:51 | #8 |
Форумчанин Подтвердите свой е-майл
Регистрация: 14.11.2007
Сообщений: 163
|
А модуль 2 зачем?
Jungo must die!!! (C) Bill Gates.
|
10.02.2008, 10:21 | #9 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
Спасибо Insainer, очень подробно и понятно.
Я наконец хоть поняла почему там разные иконки в F2. Зелененькая иконка это наверное метод какой нибудь, там запутаться можно желтенькие, беленькие (наверно что-то связаное с константами) Насчет примера. Мне неправильно показалось что Макрос2 в PACKING_LIST_INVOICE_RK_DELETING.ra r рабочий, он просто выглядел более понятно чем макрос с массивом. |
10.02.2008, 13:05 | #10 |
Форумчанин Подтвердите свой е-майл
Регистрация: 14.11.2007
Сообщений: 163
|
Скопировал модуль 1 к себе в макрос всё ок, только мне не понятно почему я меняю параметр (что бы не стирать две первые строки) мне показывает ошибку. вот так:
Jungo must die!!! (C) Bill Gates.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удаление строк | alexk | Microsoft Office Excel | 24 | 15.02.2011 08:34 |
удаление дубликатов и группировка строк | Serglen | Microsoft Office Excel | 2 | 30.07.2008 15:51 |
Импорт и удаление некоторых строк | Alex2008 | Microsoft Office Excel | 3 | 06.05.2008 18:26 |
Запрет на удаление строк и столбцов | Shavminator | Microsoft Office Excel | 2 | 12.01.2008 13:36 |
Удаление строк массива по условию | Lexakazanskij | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 12.09.2007 20:32 |