Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.02.2008, 16:27   #1
Dorvir
Пользователь
 
Аватар для Dorvir
 
Регистрация: 06.02.2008
Сообщений: 42
По умолчанию Макрос: удаление строк если в колонке А число 5

Народ хелп!

Как написать макрос на следующую тему:

удалить всю строку, если в колонке A, в ячейке формула пишет цифру 5.

Есть пакинг лист в который вносятся артикулы, количество, вес, цена и т.д. Артикулы разносятся по кодам ТН ВЭД.
Пакинг сделан на весь ассортимент, когда копируешь заказ строчки по части артикулов не заполняются, так как их нет.
У меня стоит выделение этих пустых строк желтым цветом, потом я их удаляю. Иногда приходиться удалять целый блок кода ТН ВЭД.
В стоблике А стоит формула если столбик с количеством =0 то 5, иначе 0.
То есть цифра 5 появляется в строчке артикула если его нет в заказе и его количество стоит ноль. Так же цифра 5 появляется в итогах по каждому коду, и если все значения нулевые этот итог тоже удаляется.

Очень хочется чтобы макрос сам просматривал столбец А и если бы обнаруживал там число 5, то удалял бы всю строку.

см. приложенный файл.

Спасибо!
Вложения
Тип файла: rar PACKING_LIST_INVOICE_RK_sample-3.rar (38.1 Кб, 44 просмотров)
Dorvir вне форума
Старый 07.02.2008, 18:09   #2
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
Стрелка Удаляло

Если я правильно понял формулировку, то можно это сделать так (см. модуль1).

Правильно?

PS: Можно и без массива обойтись, это только для контроля "watch"
Вложения
Тип файла: rar PACKING_LIST_INVOICE_RK_DELETING.rar (38.6 Кб, 183 просмотров)
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
Insainer вне форума
Старый 07.02.2008, 19:01   #3
Dorvir
Пользователь
 
Аватар для Dorvir
 
Регистрация: 06.02.2008
Сообщений: 42
По умолчанию

СПАСИБО ОГРОМНОЕ!!!! РАБОТАЕТ!!! УРа!!!!!!!!!!!!
Как бы научиться это все писать... ???
Такого бы удалось новоротить!!!! )))
Dorvir вне форума
Старый 08.02.2008, 19:49   #4
Leanna
Пользователь
 
Регистрация: 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 - что делает?

Код не работает
Код:
Sub HideEmptyRows()
    Set ws = ActiveSheet
    For i = ws.UsedRange.Columns.Count To 1 Step -1
        If WorksheetFunction.Columns(ws.Columns(i)) = 0 
        Then ws.Columns(i).EntireColumn.Hidden
        End if
    Next i
End Sub

Последний раз редактировалось Leanna; 08.02.2008 в 19:55.
Leanna вне форума
Старый 09.02.2008, 07:55   #5
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
Злость Функционишник

WorksheetFunction.Columns не делает ничего, ибо такой функции у объекта WorksheetFunction не существует!
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
Insainer вне форума
Старый 09.02.2008, 12:03   #6
Leanna
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 24
По умолчанию

Хорошо тогда в этом примере,

ws.Rows(i) - указывает номер ряда
WorksheetFunction.Rows - что делает?
Leanna вне форума
Старый 09.02.2008, 17:32   #7
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 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. Так что пробуйте и экспериментируйте.
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
Insainer вне форума
Старый 10.02.2008, 09:51   #8
jungo
Форумчанин Подтвердите свой е-майл
 
Аватар для jungo
 
Регистрация: 14.11.2007
Сообщений: 163
По умолчанию

Цитата:
Сообщение от Insainer Посмотреть сообщение
Если я правильно понял формулировку, то можно это сделать так (см. модуль1).

Правильно?

PS: Можно и без массива обойтись, это только для контроля "watch"
А модуль 2 зачем?
Jungo must die!!! (C) Bill Gates.
jungo вне форума
Старый 10.02.2008, 10:21   #9
Leanna
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 24
По умолчанию

Спасибо Insainer, очень подробно и понятно.
Я наконец хоть поняла почему там разные иконки в F2.
Зелененькая иконка это наверное метод какой нибудь, там запутаться можно желтенькие, беленькие (наверно что-то связаное с константами)

Насчет примера. Мне неправильно показалось что Макрос2 в PACKING_LIST_INVOICE_RK_DELETING.ra r рабочий, он просто выглядел более понятно чем макрос с массивом.
Leanna вне форума
Старый 10.02.2008, 13:05   #10
jungo
Форумчанин Подтвердите свой е-майл
 
Аватар для jungo
 
Регистрация: 14.11.2007
Сообщений: 163
По умолчанию

Скопировал модуль 1 к себе в макрос всё ок, только мне не понятно почему я меняю параметр (что бы не стирать две первые строки) мне показывает ошибку. вот так:
Изображения
Тип файла: jpg del.jpg (42.1 Кб, 176 просмотров)
Jungo must die!!! (C) Bill Gates.
jungo вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строк 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