Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Microsoft office. Создание прайс - листа в MS Excel. Макросы в MS Excel


Создание сайтов недорого. Анализ и оптимизация сайта. Раскрутка и продвижение в интернете.


Microsoft Office - совет дня.

В чрезмерных спорах утрачивается истина. (Публий Сир)

Природа породила и создала нас для каких-то более значительных дел. (Цицерон)

Мудрость приходит c возрастом, но иногда возраст приходит один.

"Люди одиноки, потомy что вместо мостов они стpоят стены" (Станислав Ежи Лец)
"Одиночество как состояние, не поддается лечению" (Фаина Раневская)




Пишите автору

Реклама и консультации

Рекомендуем подписаться! Наши самые интересные рассылки.
Рассылки Subscribe.Ru
Стратегический анализ. Стратегия развития бизнеса
Планирование карьеры. Как правильно составить резюме?
Работа в Москве. Рынок вакансий. Как найти работу в Москве?
Маркетинговая стратегия. Управление маркетингом
Аренда квартир в Москве. Снять (сдать) квартиру. Наем жилья
Управление рисками. Антикризисное управление.
Бизнес в условиях кризиса. Бизнес новости.
Современный мир. Глобальные проблемы. Эволюция человека
Умные мысли. Афоризмы и цитаты великих людей. Афоризм дня
Метафоры в жизни. Метафора как подражание и как троп
Читать книги! Рецензия на книгу. Что почитать?
Лучшие сайты. Обмен ссылками
Обслуживание компьютеров
Создание сайтов недорого. Анализ и оптимизация сайта. Раскрутка и продвижение в интернете.
Microsoft Office - совет дня
___________________________

Рассылка новостей
Выпуск от 2009-08-23 23:47

Здравствуйте, дорогие читатели!  Присылайте свои вопросы на msoffi@mail.ru (в первой половине сентября меня не будет рядом с компьютером L )

В прошлом выпуске (http://subscribe.ru/archive/comp.soft.win.msoffice/200907/31180754.html ) мы разобрались с условными операторами и с организацией работы "над текущей ячейкой".

Давайте вернемся к нашему прайс-листу.

Организуем его в следующем виде:

колонка E - Нал - количество в пачках (штуках)

колонка D - базовая цена (в долларах)

колонка С - Оптовая цена (D* курс). Курс - в колонке D1

колонка В - Розничная цена (колонка С * розничный к-т, находящийся в яч.D2 )

 

 

Наша задача сегодня - выполнить некоторые действия над таблицей. Эти действия будут зависеть от значения, хранящегося в ячейке таблицы. Давайте выделим значение в первой колонке (Наименование), если количество (колонка E) равно нулю.

 

Для начала вспомним условное форматирование ячеек. Выделим значение в колонке "Нал" красным (оранжевым), если Нал = 0 или желтым, если Нал от  1 до 4х. Для этого:

1. Выделите необходимые ячейки (в данном случае, ячейки под заголовком Нал.”).

2. Выполните команду Формат | Условное форматирование.

3. В группе параметров Условие 1 диалогового окна Условное форматирование выберите из первых двух списков пункты значение и между , а в 3й и 4й ячейках 1 и 4.  . В диалоговом окне Формат ячеек выберите желтый цвет.

4. Вернувшись в диалоговое окно Условное форматирование, щелкните на кнопке А также.

5. Повторите всю последовательность в группе параметров Условие 2, выбрав пункты значение и равно, и введя в третье поле значение 0. В диалоговом окне Формат ячеек выберите красный цвет.

6. Щелкните на кнопке Формат и выберите на вкладке Вид, открывшегося диалогового окна красный цвет. Закройте диалоговое окно Формат ячеек щелчком мыши на кнопке ОК.

7. Закройте диалоговое окно щелчком на кнопке OK.

Теперь при нулевом количестве, соответствующая ячейка колонки Е будет красной (или желтой, при значении от 1 до 4х).

Похожие действия повторим с использованием программирования на VBA, но в рамках поставленной нами задачи. Т.е. те позиции, по которым товар закончился, должны автоматически выделяться (примерно так, как мы выделяли по щелчку в прошлом выпуске.)

Воспользуемся уже имеющимся небольшим опытом в обработке событий рабочего листа. Макрос можно связать с элементом управления, например, командной кнопкой, размещенной на листе или с каким-нибудь клавиатурным эквивалентом, однако наилучшим будет такое решение, при котором пользователю не придется предпринимать специальные шаги для вызова макроса — когда процедура выполняется в ответ на какое-то событие Excel. Среди событий рабочего листа - событие Activate, которое генерируется в момент, когда лист становится активным (текущим). Это может произойти в момент открытия книги, если книга открывается на данном листе или же при переключении между листами в уже открытой книге. Если выбрать какой-то другой лист, а потом вернутся к листу с прайсом, то для него будет генерироваться событие Activate.

Этот момент и будет наилучшим для выполнения макроса, который вычеркивает позиции прайс-листа с закончившимся товаром. В этом случае как бы ни открывался лист, он предстанет перед пользователем в уже подготовленном виде. Итак, необходимо создать макрос, который представляет собой процедуру обработки события Activate для рабочего листа. Для этого следует вновь вернуться в редактор Visual Basic, щелкнув правой кнопкой мыши на ярлыке с названием листа в нижней части окна, и выполнив в контекстном меню команду Исходный текст. В левом списке Object в верхней части окна кода выберите объект Worksheet (т.е. выбранный рабочий лист), а в правом Procedure — событие Activate. В результате будет создана заготовка процедуры Worksheet_Activate, в которую нужно ввести текст:

Private Sub Worksheet_Activate()

   Dim N As Integer

     For N = 5 To UsedRange.Rows.Count

       If Cells(N, 5).Value = 0 Then

           Cells(N, 1).Interior.ColorIndex = 5

           Cells(N, 1).Interior.Pattern = xlPatternGray25

        Else

           Cells(N, 1).Interior.ColorIndex = xlNone

           Cells(N, 1).Interior.Pattern = xlPatternNone

       End If

    Next N

End Sub

 

Взглянем на исходный текст последней процедуры. В результате выполнения строки     Dim N As Integer

будет создана переменная N типа Integer — она предназначена для хранения целочисленных значений.

Конструкцию:

     For N = 5 To UsedRange.Rows.Count

….

    Next N

называют оператором цикла. Заключенный в нем код выполняется для всех значений переменной N, начиная с 5(строка, с которой начинается наш товар) и заканчивая числом, которое возвращает выражение UsedRange.Rows.Count. Что это за число? Макрос должен просмотреть все строки прайс-листа до самого конца, но ведь количество строк в конкретном прайсе заранее неизвестно! Выражение UsedRange.Rows.Count возвращает число использованных строк рабочего листа. Если самой нижней строкой, куда “доходил” пользователь, будет, скажем, 500-я строка, то выражение UsedRange.Rows.Count вернет значение 500.

Наконец, условный оператор

       If Cells(N, 5).Value = 0 Then

           Cells(N, 1).Interior.ColorIndex = 5

           Cells(N, 1).Interior.Pattern = xlPatternGray25

выполняет следующую операцию: если в текущей строке (ее номер задает переменная N) ячейка 5-го столбца содержит значение 0, то соответствующая ячейка первого столбца сначала закрашивается в синий цвет (Cells(N, 1).Interior.ColorIndex = 5), а затем штрихуется узором “25%-й серый” (Cells(N, 1).Interior.Pattern = xlPatternGray25).

Вы можете поэкспериментировать. Оставить или только Cells(N, 1).Interior.ColorIndex = 5, или только  Cells(N, 1).Interior.Pattern = xlPatternGray25

Можно выбрать другой цвет, назначив  Cells(N, 1).Interior.ColorIndex = 6

И, для того, чтобы предусмотреть "отмену" выделения ячеек с отсутствующим товаром после того, как мы ввели ненулевое значение в колонку Нал предусмотрим дополнительное условие:

        Else

           Cells(N, 1).Interior.ColorIndex = xlNone

           Cells(N, 1).Interior.Pattern = xlPatternNone

Т.е. если количество "ненулевое" (Else  - это любая другая ситуация, креме описанной в предыдущем операторе If) мы "сбрасываем" цветовое оформление ячейки и ее штриховку. Т.е. эти операторы будут выполняться и над теми ячейками, которые нужно привести в "первоначальное" состояние, и над теми, которые не нужно изменять, но они все равно будут "сбрасываться", т.к. удовлетворяют подразумеваемому условию (значение в колонке Нал не равно 0). Для нас это в данном случае несущественно (и не заметно J).

Введя приведенный выше код, можно проверить его работу. Поставим по некоторым позициям Нал = 0. Переключимся на другой лист. После возвращения на текущий лист в колонке "Наименование" должен измениться цвет и штриховка.

 

 

 

Предлагаю подписаться на рассылки:

Хорошее настроение гарантируется! Смешные истории. Анекдоты

Маркетинговая стратегия. Управление маркетингом

 

До встречи в следующих выпусках!

Игорь

msoffi@mail.ru

 

Создание сайтов недорого. Анализ и оптимизация сайта. Раскрутка и продвижение в интернете.
Рассылки Subscribe.Ru
Стратегический анализ. Стратегия развития бизнеса
Планирование карьеры. Как правильно составить резюме?
Работа в Москве. Рынок вакансий. Как найти работу в Москве?
Маркетинговая стратегия. Управление маркетингом
Аренда квартир в Москве. Снять (сдать) квартиру. Наем жилья
Управление рисками. Антикризисное управление.
Бизнес в условиях кризиса. Бизнес новости.
Современный мир. Глобальные проблемы. Эволюция человека
Умные мысли. Афоризмы и цитаты великих людей. Афоризм дня
Метафоры в жизни. Метафора как подражание и как троп
Читать книги! Рецензия на книгу. Что почитать?
Лучшие сайты. Обмен ссылками
Обслуживание компьютеров
Рекомендуем подписаться! Наши самые интересные рассылки.

В избранное