Темы статей
Выбрать темы

Календарь, который всегда под рукой

Редакция БК
Ответы на вопросы

Календарь, который всегда под рукой

 

Уважаемая редакция! В программе «1С: Бухгалтерия» можно вводить даты прямо из календаря. Это очень удобно, особенно когда работаешь на ноутбуке, где нет цифровой клавиатуры. Хотелось бы получить такую же возможность и в Excel. Подскажите, как это сделать? Может, есть какая-нибудь функция? Спасибо.

А. В. Солод, г. Харьков

Отвечает

Николай КАРПЕНКО, канд. техн. наук, доцент кафедры прикладной математики и информационных технологий Харьковской национальной академии городского хозяйства

 

В Excel есть

любая функция, которая называется VBA (Visual Basic for Application). Visual Basic — это полноценный, мощный язык программирования. Он позволяет реализовать те задачи, которых нет в стандартном наборе средств пакета Excel. В частности, с помощью VBA можно решить и вашу проблему. К сожалению (или к счастью…), другого способа не существует. По крайней мере, мне он не известен. Замечу, что ничего страшного в этом нет. Глубоких знаний VBA нам не понадобится. Достаточно сделать, как это описано в статье, и все должно получиться.

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

1) открываем файл или создаем новую рабочую книгу («

Ctrl+N»);

2) входим в меню «

Сервис → Макрос → Безопасность…». В появившемся окне выбираем вариант «Низкая». Без такой установки макросы работать не будут;

3) через меню «

Сервис → Макрос → Редактор Visual Basic…» открываем редактор Visual Basic. Вместо меню можно воспользоваться комбинацией «Alt+F11». Увы, здесь придется перейти на английский язык: меню редактора VBA не русифицировано;

4) вызываем меню «

Insert → UserForm». В рабочей области Visual Basic появится окно формы с именем «UserForm1» (рис. 1). Вначале эта форма пуста. Вместе с формой автоматически активируется панель инструментов «ToolBox», изображенная на рис. 1. Если окно «ToolBox» не появилось, включите его через меню «View → ToolBox».

img 1

В окне «

ToolBox» есть шестнадцать управляющих элементов: кнопки, списки, счетчики и т. д. Нам нужен элемент «Календарь». Такого на панели «ToolBox» пока нет. Нужно его добавить;

5) щелкаем правой кнопкой мыши на свободной области в панели «

ToolBox». Из контекстного меню выбираем «Additional Controls». Появится окно, как на рис. 2;

img 2

6) в нем находим элемент «

Календарь 12.0» (в некоторых версия Excel он называется «Элемент управления Календарь»). Щелчком кнопки мыши включаем его (ставим крестик);

7) в окне «

Additional Controls» нажимаем «ОК». На панели «ToolBox» появится новая кнопка «Calendar» (рис. 1);

8) щелкаем по этой кнопке. Удерживая нажатой левую кнопку мыши, рисуем календарь на

поле формы;

9) вызываем меню «

View → Code» (или нажимаем «F7»), чтобы перейти к созданию тела макроса;

10) появится окно для ввода программы. В это окно вводим такой текст:

Private Sub Calendar1_Click()

ActiveCell = Calendar1.Value

ActiveCell.NumberFormat = “dd/mm/yy”

UserForm1.Hide

End Sub

Private Sub UserForm_Activate()

Me.Calendar1.Value = Date

End Sub

Важно!

Первую и последнюю строки этого текста можно не вводить. Visual Basic внедрит их в окно с кодом программы автоматически . Вам остается напечатать буквально шесть строк.

11) вызываем меню «

Insert → Module». Появится окно для ввода текста программы;

12) в него вводим три строки:

Sub ПоказКалендарь()

UserForm1.Show

End Sub

13) закрываем окно редактора Visual Basic;

14) в окне Excel вызываем меню «Сервис → Макрос → Макросы» (или нажимаем «Alt+F8»). Появится окно, как на рис. 3;

img 3

15) в нем выбираем строку с именем «

ПоказКалендарь» и нажимаем кнопку «Параметры»;

16) в окне «

Параметры макроса» указываем комбинацию клавиш для вызова нашей программы. В примере на рис. 3 это комбинация «Ctrl+К». Все готово.

Важно!

При выборе сочетания горячих клавиш следите за языком набора. В окне на рис. 3 в комбинации «Ctrl+К» я ввел букву «К» на русском регистре. Поэтому для вызова календаря клавиатуру тоже нужно будет переключить на русский язык.

Теперь можно испытать результат наших усилий:

1) нажимаем комбинацию «

Ctrl+К». На рабочем листе появится календарь (рис. 4);

img 4

2) щелчком мыши выбираем дату. Она появится в текущей ячейке, а календарь автоматически закроется.

Для желающих дополнительно поупражняться с VBA могу предложить улучшенный вариант макроса. Вот программа для формы:

Private Sub UserForm_Activate()

If Not IsEmpty(ActiveCell.Value) And IsDate(ActiveCell.Value) Then

Me.Calendar1.Value = ActiveCell.Value

Else

Me.Calendar1.Value = Date

End If

Me.Caption = "Сегодня — " & Date

End Sub

Private Sub Calendar1_Click()

ActiveCell = Me.Calendar1.Value

ActiveCell.NumberFormat = "dd/mm/yy"

UserForm1.Hide

End Sub

Private Sub Calendar1_KeyDown(KeyCode As Integer, ByVal Shift As Integer)

If KeyCode = 27 Then Unload Me

End Sub

В этой версии программы календарь можно закрывать клавишей «

Esc». Если в текущей ячейке записана дата, календарь автоматически установится на эту дату. В заголовке окна с календарем будет видна текущая дата.

И последнее. Чтобы каждый раз не пересоздавать программу вызова календаря, сохраните документ с макросом в виде

шаблона: «Файл → Сохранить как…», укажите тип файла «Шаблон», имя и место хранения документа. Удобнее всего сделать это в папке стандартных шаблонов Excel. Обычно это « x:\Documents and Settings\user\Application Data\Microsoft\Templates\». Здесь «x» — диск, где расположена папка с шаблонами. Обычно это диск «С». Строка «user» — это имя, которое вы указываете при входе в систему Windows (ваш логин).

Теперь вы сможете создавать документы на основе этого шаблона. То есть заходите в меню «

Файл → Создать…», раскрываете «Шаблоны на моем компьютере», находите шаблон с календарем и загружаете его в Excel. В созданной рабочей книге календарь будет доступен.

 

Жду ваших вопросов, замечаний и предложений на

bk@id.factor.ua, nictomkar@rambler.ru или на форуме редакции www.bk.factor.ua/forum . Удачной работы!
App
Скачайте наше мобильное приложение Factor

© Factor.Media, 1995 -
Все права защищены

Использование материалов без согласования с редакцией запрещено

Ознакомиться с договором-офертой

Присоединяйтесь
Адрес
г. Харьков, 61002, ул. Сумская, 106а
Мы принимаем
ic-privat ic-visa ic-visa

Мы используем cookie-файлы, чтобы сделать сайт максимально удобным для вас и анализировать использование наших продуктов и услуг, чтобы увеличить качество рекламных и маркетинговых активностей. Узнать больше о том, как мы используем эти файлы можно здесь.

Спасибо, что читаете нас Войдите и читайте дальше