Випадає календар для введення дат
Наше завдання - додати в книгу Excel призначену для користувача форму (вікно) з автоматичним календарем. Ось таке:
Віконце буде з'являтися при натисканні клавіш і після вибору в ньому потрібної дати - вона потрапляє в поточну комірку аркуша. Просто і красиво!
Створіть в ньому нову порожню призначені для користувача форму, вибравши в меню Insert - User form.
Автоматично повинна з'явитися панель Toolbox.
Якщо не з'явилася - тисніть в меню View - Toolbox.
На цій панелі представлені різні керуючі елементи вікон: кнопки, списки, лічильники і т.д. Але нам потрібен елемент (календар), якого поки на панелі не видно. Щоб додати його, клацніть по сірому фону панелі правою кнопкою миші і виберіть Additional Controls. З'явиться ось таке вікно:
У ньому треба знайти і відзначити Елемент управління Календар 11.0 (Calendar Control 11.0). Версії можуть відрізнятися (11.0, 10.0 і т.д.) в залежності від версії Microsoft Office, це несуттєво. Після натискання на ОК на панелі з'явиться нова кнопка - Calendar.
Клацніть по ній, а потім намалюйте календар на поле форми, утримуючи ліву кнопку миші:
При бажанні подправьте розміри форми і календаря і введіть текст заголовка вікна в панелі властивостей зліва.
Тепер перейдіть в режим введення програмного коду створеної форми (меню View - Code) і скопіюйте туди цей текст:
Private Sub Calendar1_Click ()
ActiveCell = Calendar1.Value
ActiveCell.NumberFormat = "dd / mm / yy"
End Sub
Private Sub UserForm_Activate ()
Me.Calendar1.Value = Date
End Sub
Тепер треба змусити Excel показувати нам створену форму, коли ми цього захочемо. Для цього вставте новий модуль (Insert - Module) і скопіюйте туди цей текст:
Sub ShowCalendar ()
UserForm1.Show
End Sub
Якщо у Вас встановлена не повна версія Office, то елементу управління Календар може не виявитися в списку Additional Controls. Тоді скачайте цей файл. помістіть його в папку C: \ Windows \ system32 і зареєструйте новий елемент управління через меню Пуск - Виконати. далі набрати Regsvr32 c: \ windows \ system32 \ mscal.ocx і натиснути ОК.
(За доповнення спасибі Vadim)
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
If Not Application.Intersect (Range ( "A1: A20"), Target) Is Nothing Then
UserForm1.Show
End If
End Sub
Тепер при виділенні будь-якого елементу з діапазону А1: А20 календар буде автоматично відображатися на екрані.
НОВИНИ ФОРУМУ
Лицарі теорії ефіру