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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2010, 15:05   #1
Marisabell
 
Регистрация: 03.01.2010
Сообщений: 6
По умолчанию Правильно написать макрос

Помогите, пожалуйста, решиь проблему.
Прикладываю файл. В файле несколько листов.
Первый лист OSNOVA, в нём находится информация точек доставки (уникальный код человека, получающего заказ;имя-фамилия, адрес, телефон, и определённое количество каждого товара).
Второй лист—заказ—в нём указаны сроки доставки, названия товаров.
Названия, указанные в заказе, вставляются в OSNOVU. В жизне эти 2 листа заполняют разные люди.

Третий лист—обобщение первого и второго листа.
Дальше идут акты приёма товаров.

Задача—создать макрос, котрый будет вставлять в акты приёма товара количество, соответствующее определённому уникальному коду, и убирать позиции 0 (в случае если человеку этот товар не идёт). И внизу акта чтобы также удалялись названия товаров с количеством 0.
Максимальное количество проектов 25, максимальное количество точек 80!
При этом каждый раз могут меняться и товары, и количества, и уникальные коды.
Написанный мною макрос (он прикручен к листу MAKROS-EKSPIREMENT) делает всё, что необходимо, но как только меняется количество в основе, всё слетает.
ПОМОГИТЕ!!!!
Если необходимо МОГУ ОПИСАТЬ макрос.
Вложения
Тип файла: rar help.rar (87.6 Кб, 9 просмотров)
Marisabell вне форума Ответить с цитированием
Старый 03.01.2010, 17:48   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте такой вариант:

Код:
Sub test()
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    Dim sh As Worksheet: Set sh = ActiveSheet    ' Set sh = Sheets("MAKROS_EKSPIREMENT")
    Dim FirstCell As Range: Set FirstCell = sh.Range("G5")    ' первая ячейка
    ' берем диапазон до последней заполненной
    Dim ra As Range: Set ra = sh.Range(FirstCell, FirstCell.End(xlDown))
    ra.Value = ra.Value    ' преобразуем формулы в значения
    ra.Replace "0", vbNullString, xlWhole    ' очищаем ячейки с нулями
    On Error Resume Next
    ra.SpecialCells(xlCellTypeBlanks).EntireRow.Delete    ' удаляем строки, которые были с нулями

    sh.UsedRange.Value = sh.UsedRange.Value    ' преобразуем формулы в значения на всем листе

    ' удаляем строки с ошибками в первом столбце
    sh.Range("a:a").SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Delete
End Sub
EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно написать?? Дима я Общие вопросы C/C++ 6 25.11.2009 22:52
Помогите плиз правильно написать макрос обновления данных из разных файлов Legame Microsoft Office Excel 10 10.09.2009 10:39
Как правильно написать скрипт? Cobra Общие вопросы по Java, Java SE, Kotlin 3 14.06.2008 13:10
Как правильно написать процедуру Cold Went Компоненты Delphi 1 29.04.2008 14:21
Помогите правильно написать формулу Вики Microsoft Office Excel 7 04.02.2008 11:23