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

MS Office. Группировка в Excel. Таблицы. Создание прайс-листа, редактор Visual Basic (основы работы)


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


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

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

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

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

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




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

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

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

Рассылка новостей
Выпуск от 2009-07-31 18:07

Здравствуйте, дорогие читатели!  Присылайте свои вопросы на msoffi@mail.ru .

Приношу свои извинения за задержку выпусков - а кому сейчас легко? J Но Вы можете в любое время присылать письма со своими вопросами, на которые я буду отвечать по мере возможности.

Продолжить наше обучение я предлагаю хрестоматийным примером - созданием прайс-листа. Этот пример легко трансформируется в другие задачи. Его можно усложнять бесконечно, добавляя все новые и новые возможности, формируя клиентский прайс-лист из внутрифирменного, добавлять данные из различных источников, отбирать разные данные для разных клиентов и т.д.

Для начала я хочу обратить ваше внимание на группировку данных в Excel - очень полезная функция, о которой часто забывают, хотя она и "лежит на виду".

Как группировать данные?

Предположим, что вы делаете простой прайс-лист, состоящий из множества позиций и Вы хотите, чтобы можно было бы "сворачивать" и "разворачивать" отдельные товарные группы. Я думаю, что почти все Вы видели как это работает на практике. Итак:

1. Выделите все строки раздела кроме его заголовка.

2. Выполните в меню Данные - Группа и структура - команду Группировать   

3. Выделенные строки сразу будут сгруппированы.

Если были выделены не целые строки при помощи их заголовков, а просто группа ячеек, то отобразится диалоговое окно, в котором пользователю будет предложено уточнить, что он группирует —  строки или столбцы.

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

Список структурирован: каждый из его разделов можно свернуть или развернуть щелчком на кнопках  “—“ или “+“

Уже сгруппированные данные можно еще раз сгруппировать, создав более высокий уровень иерархии. Для этого необходимо снабдить несколько разделов общим заголовком, выделить все строки за исключением этого заголовка и снова выполните команду Данные - Группа и структура - Группировать   

При этом появится еще одна ступень группировки данных на панели в левой части листа.

Итак, мы получили простой прайс-лист, сгруппированный по товарным позициям, которые можно "показывать" и "прятать". Но, для того, чтобы формировать из "внутрифирменного" несколько прайс-листов для разных клиентов, нам не обойтись без написания макросов (обойтись, конечно, можно, но иногда это будет занимать много времени…). Поэтому продолжим осваивать написание макросов.

Давайте дальше попробуем отметить те позиции в нашем прайс-листе, которые отсутствуют в данный момент на складе, или которые не должны попасть в клиентский прайс-лист. Отмечать будем двойным щелчком мышки на соответствующей позиции (в первой колонке таблицы).

Откроем окно редактора Visual Basic. Для этого существует специальная команда в меню Сервис- Макрос- редактор Visual Basic, или  можно нажать Alt+F11. Но можно и расположить указатель мыши на ярлыке с названием рабочего листа в нижней части окна Excel и щелкнуть правой кнопкой мыши. Текущим должен быть именно тот лист рабочей книги, для которого создается макрос. В результате откроется контекстное меню, в котором нужно выполнить команду Исходный текст.

В верхней части окна кода (большое, или "центральное окно" редактора) находятся два списка, определяющие конкретную процедуру (макрос).

Разверните левый список и выберите в нем пункт Worksheet. Затем, в правом списке выберите пункт BeforeDoubleClick. В результате в окне кода будет создан заголовок нужной процедуры Worksheet_BeforeDoubleClick. Первая и последняя строки процедуры созданы автоматически, и теперь требуется ввести исходный текст процедуры

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  With ActiveCell

    If .Column = 1 Then

        If .Interior.Pattern = xlPatternNone Then

           .Interior.Pattern = xlPatternGray25

        Else

           .Interior.Pattern = xlPatternNone

        End If

        Cancel = True

    End If

   End With

End Sub

 

Если мы будем набирать код макроса "вручную", а не копируя из рассылки, то редактор Visual Basic будет "не лету" проверять набираемый текст и указывать на ошибки (или предлагать возможные варианты продолжения, предлагая различные процедуры, функции, аргументы и т.д.), редактор может раскрыть окно с предупреждением об ошибке - тогда нужно проверить - то ли мы набрали…

Наконец, исходный текст макроса введен, и можно испытать его в деле. Для возврата в окно Excel можно воспользоваться кнопкой на панели задач или специальной кнопкой со значком Excel, расположенной в левом верхнем углу окна редактора Visual Basic.

Пробуем выполнить двойной щелчок на одной из ячеек 1 столбца нашего прайс-листа. Если все набрано верно, то ячейка должна заштриховаться. Еще один двойной щелчок - штриховка исчезает...

Дальше - подсказка для "любопытных", для тех, кто хочет разобраться в работе нашего макроса.

В двух списках были выбраны пункты Worksheet и BeforeDoubleClick— в результате процедура (Sub) стала называться Worksheet_BeforeDoubleClick. Здесь Worksheet — это стандартный объект, для которого создавалась данная процедура — рабочий лист. BeforeDoubleClick — это стандартное событие рабочего листа, событие это происходит при каждом двойном щелчке на листе. Если бы в правом списке было выбрано другое событие, например, Activate, то код процедуры выполнялся бы при активации листа, то есть в момент, когда лист становится текущим. Но в нашем случае код будет выполняться при двойных щелчках мыши на любой ячейке данного листа.

С командами:

Private Sub Worksheet_BeforeDoubleClick     и   End Sub

мы уже знакомы - они обозначают соответственно начало и конец макроса. Все "значимые" для нас команды должны располагаться между ними.

Дальше - команда  With ActiveCell   (и ее "окончание"  End With )

Первая и последняя строчки определяют, что весь заключенный между ними код относится к объекту ActiveCell, то есть к текущей ячейке. Именно она-то нас и интересует. Поскольку любая ячейка, на которой выполнен двойной щелчок мыши, автоматически становится текущей.

Оператор   If .Column = 1 Then

является "условным", т.е. означает если выполняется такое-то условие (.Column=1)    то мы будем выполнять команды, расположенные после  Then (но до End If) В нашем случае "условием" является то, что мы ограничиваем "нужные нам столбцы" только 1м столбцом. Т.е. если мы будем "щелкать"  не в первом столбце, то с такими ячейками ничего происходить не будет.

Непосредственно само "заштриховывание" (и его "снятие") выполняется следующими командами:

        If .Interior.Pattern = xlPatternNone Then

           .Interior.Pattern = xlPatternGray25

        Else

           .Interior.Pattern = xlPatternNone

        End If

Здесь мы встречаемся с конструкцией   If Then …  Else… End If

Добавился оператор Else  После данного оператора идут команды, которые будут выполняться в том, случае, если не выполняется условие, описанное после If

В нашем случае, если проверка на "заштрихованность"  показала, что ячейка уже заштрихована, то командой,           .Interior.Pattern = xlPatternNone

 следующей после  Else   будет восстановлен "нормальный" вид ячейки.

Переменная Cancel является параметром процедуры, и смысл этого параметра таков: присвоив ему логическое значение True (Истина), пользователь как бы сообщается рабочему листу Excel, что двойной щелчок отменяется, т.е. его не было. Поэтому Excel не перейдет по двойному щелчку к редактированию ячейки, как он это обычно делает.

Примечание.

Такой объект, как ячейка, обладает множеством свойств. Если, например, вместо

.Interior.Pattern = xlPatternGray25 использовать оператор .Value = 100, то по двойному щелчку на ячейке в нее будет помещаться число 100. Можно использовать такой оператор, как .Interior.ColorIndex = 3 в этом случае ячейка будет окрашиваться в красный цвет. Вернуть ей белый цвет можно оператором .Interior.ColorIndex = 2. Черному цвету соответствует значение 1, а серому — 15. Чтобы получить более подробную справку, достаточно выделить выражение ColorIndex и нажать клавишу F1. Справка по Visual Basic не устанавливается автоматически при установки MS Office. Поэтому при получении ответа, что справка не установлена, можно ее установить (однако она на английском..).

 

Подсказки при работе в редакторе Visual Basic.

 

∙ Если окно редактора Visual Basic закрывает весь экран и панель задач не видна, щелкните на кнопке максимизации окна в правом верхнем углу (средняя из трех кнопок).

∙ Если при вводе исходного текста появляется окно с сообщением об ошибке “Ошибка компиляции. Ожидалось...”, щелкните на кнопке OK или нажмите клавишу [Esc], а затем исправьте ошибку.

∙ Если при переходе из окна Excel в окно Visual Basic нельзя ввести текст при помощи клавиатуры или выбрать, какой-нибудь элемент окна мышью, вернитесь в окно Excel и нажмите клавишу [Esc]. Видимо, Excel был оставлен в состоянии редактирования ячейки, а в такой ситуации окно Visual Basic не реагирует на действия пользователя.

∙ Если при выполнении макроса возникла ошибка, то на экране появится окно с сообщением “Ошибка выполнения...”. Если щелкнуть на кнопке Завершить, то выполнение макроса прервется —выполняемые им операции не будут завершены.

∙ В случае, когда макрос не может завершить свою работу из-за логической ошибки в тексте программы (при этом Excel может не реагировать на действия пользователя), необходимо нажать сочетание клавиш [Ctrl]+[Break] или, что, то же самое, [Ctrl]+[Pause].

∙ Если выполнение программы прервано пользователем (см. выше), появится окно с сообщением “Выполнение программы прервано...”. В этом случае необходимо щелкнуть на кнопке Завершить.

∙ Если макрос “отказывается” стартовать, выдавая окно с сообщением “Невозможно выполнение программы в режиме прерывания”, следует перейти в окно редактора Visual Basic и выполнить команду Запуск | Сброс (Run | Reset).

 

 

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

Игорь

msoffi@mail.ru

 

 

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

В избранное