Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/285: Рейтинг темы: голосов - 285, средняя оценка - 4.66
79 / 79 / 15
Регистрация: 24.11.2010
Сообщений: 515
Записей в блоге: 14
1

Как в MS Excel сделать выпадающий календарь при выборе ячейки мышкой

23.11.2011, 16:42. Показов 56163. Ответов 50
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Как в MS Excel сделать выпадающий календарь при выборе ячейки мышкой?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2011, 16:42
Ответы с готовыми решениями:

Выпадающий календарь в Excel 2003
Столкнулся с проблемой в необходимости приаатчивания календаря в ячейку Excel 2003, типа чтобы...

Выпадающий календарь не видно под другими элементами, как сделать, чтобы он был сверху?
Что нужно сделать, чтобы календарь был поверх всех элементов? Может быть что-то нужно добавить в...

Как сделать поле для выбора даты (выпадающий календарь) на странице, сформированной контроллером?
Я создал модель и контроллер. Контроллер сформировал стандартные 4 страницы со своими полями. Мне...

Выпадающий список при выборе из базы данных MSSQL
есть такая форма с DBgrid ами и прочими компонентами для связи с БД Вопрос в том что бы создать...

50
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
14.01.2015, 17:17 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Alex77755 Посмотреть сообщение
Ну раз нет DatePcker, то зачем пытаться его еспользовать?
Alex77755, в этом календаре от Night Ranger нет DatePcker. И сделан не плохо.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
'---------------------------------------------------------------------------------------
' Решение       : Календарь
' Дата и время  : 14 января 2015  01:15
' Автор         : Night Ranger
'                 Яндекс.Деньги - 410012757639478
'                 [email]Exingsteem@yandex.ru[/email]
'                 [url]https://www.cyberforum.ru/vba/[/url]
' Описание      : Этот пример наглядно демонстрирует, как можно использовать календарь
'                 без подключения его к проекту, для этого нужна только форма
'                 совместимость версий любая
'---------------------------------------------------------------------------------------
Const jstart = 5, istart = 5
Const twip = 18, cc = 6
Dim tt(cc, cc) As MSForms.ToggleButton
Dim lb As MSForms.Label
Dim WithEvents fr As MSForms.Frame
Dim WithEvents tb As MSForms.ToggleButton
Dim WithEvents cbMonth As MSForms.ComboBox
Dim WithEvents cbYear As MSForms.ComboBox
Dim WithEvents btn As MSForms.CommandButton
 
Public ThisDate As Date, iNext&, cr As Boolean
 
Private Sub btn_Click()
    cr = False
    ThisDate = Date
    cbMonth.ListIndex = Month(ThisDate) - 1
    cbYear.Text = Year(ThisDate)
    cr = True
    Update
End Sub
 
Private Sub lbUpdate()
    If cr = False Then Exit Sub
    lb.Caption = Format(ThisDate, "mmmm yyyy г")
    If Split(lb.Caption)(0) <> cbMonth.Text Then cbMonth_Click
End Sub
Private Sub Update()
    lbUpdate
    Filling
End Sub
 
Private Sub cbMonth_Click()
    If cr = False Then Exit Sub
    ThisDate = DateSerial(Year(ThisDate), cbMonth.ListIndex + 1, Day(ThisDate))
    Update
End Sub
Private Sub cbYear_Click()
     If cr = False Then Exit Sub
    ThisDate = DateSerial(cbYear.Text, Month(ThisDate), Day(ThisDate))
    Update
End Sub
 
Private Sub UserForm_Initialize()
    maxWidth = twip * (cc + 1) * 2
    Width1 = maxWidth \ 2
    iNext = istart
    jNext = jstart
    ThisDate = Date
    Me.Caption = "Календарь"
    Set fr = Me.Controls.Add("Forms.Frame.1", "fr")
    Set lb = Me.Controls.Add("Forms.Label.1", "lb")
    Set cbMonth = Me.Controls.Add("Forms.ComboBox.1", "cbMonth")
    Set cbYear = Me.Controls.Add("Forms.ComboBox.1", "cbYear")
    Set btn = Me.Controls.Add("Forms.CommandButton.1", "btn")
 
    With lb
        .Move jstart, istart, Width1
        .Font.Size = .Font.Size * 2
        iNext = iNext + .Height + istart
        jNext = jNext + .Width + jstart
    End With
    With cbMonth
        .Move jNext, istart, (Width1 - jstart * 2) \ 2, lb.Height
        For i = 1 To 12
            .AddItem Split(FormatDateTime(DateSerial(0, i, 1), vbLongDate))(1)
        Next
        jNext = jNext + .Width + jstart
    End With
    With cbYear
        .Move jNext, istart, (Width1 - jstart * 2) \ 2, lb.Height
        For i = Year(ThisDate) - 100 To Year(ThisDate) + 100
            .AddItem CStr(i)
        Next
    End With
    With fr
        .Move jstart, iNext, maxWidth, twip * (cc + 1)
        .Enabled = 0
        .SpecialEffect = 0
    End With
    For i = 0 To cc: For j = 0 To cc
        Set tt(j, i) = fr.Controls.Add("Forms.ToggleButton.1", "tt" & i & j)
        With tt(j, i)
            .Move j * twip * 2, i * twip, twip * 2, twip
            .Locked = i = 0
        End With
    Next j, i
    With btn
        .Caption = "Сегодня"
        .Move jstart, iNext + fr.Height + istart, lb.Width, lb.Height
    End With
    btn_Click 'Дата сегодня !
    Filling
    lbUpdate
End Sub
 
Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    On Error Resume Next: Err.Clear
    Set tb = tt((X - jstart) \ twip \ 2, (Y - iNext) \ twip)
    If Err = 0 Then
        With tb
            If .Enabled And .Locked = False Then
                For i = 1 To cc: For j = 0 To cc
                    With tt(j, i)
                        .Value = (.Name = tb.Name)
                        If .Value Then
                            ThisDate = DateSerial(cbYear.Text, cbMonth.ListIndex + 1, .Caption)
                        End If
                    End With
                Next j, i
    End If: End With: End If
End Sub
Sub Filling()
    For j = 0 To cc  'Понедельники вторники даты и тд
        With tt(j, 0)
            .Caption = WeekdayName(j + 1, 1, vbMonday)
            .Font.Bold = 1
        End With
    Next: j = 0
    While Weekday(DateSerial(Year(ThisDate), Month(ThisDate), j)) <> 1
        j = j - 1
    Wend: jj = j
    For i = 1 To cc: For j = 0 To cc
        v = DateSerial(Year(ThisDate), Month(ThisDate), jj) + 1
        With tt(j, i)
            .Caption = Day(v)
            .Enabled = Month(v) = Month(ThisDate)
            .Value = .Enabled And .Caption = Day(ThisDate)
        End With: jj = jj + 1
    Next j, i
End Sub
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
14.01.2015, 17:19 42
в файле
Вложения
Тип файла: rar Calendar.rar (29.3 Кб, 154 просмотров)
0
416 / 263 / 83
Регистрация: 27.10.2012
Сообщений: 861
14.01.2015, 17:30 43
Нашёл какой-то календарь, добавил рамки при наведении курсора, чтобы по-взрослому было.
Вложения
Тип файла: rar календарь1.rar (26.1 Кб, 176 просмотров)
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
14.01.2015, 17:38 44
Я же говорю, что таких календарей есть...
вот ещё 4
Вложения
Тип файла: rar calendar_qw_dizine.rar (48.1 Кб, 175 просмотров)
0
Заблокирован
14.01.2015, 18:18 45
Цитата Сообщение от ac1-caesar Посмотреть сообщение
от Night Ranger нет DatePcker. И сделан не плохо
Я выложил версию получше еще утром, здесь

датой можно оперировать с помощью
ThisDate, там-же я скинул файл с примером, а для кого я старался?:
ac1-caesar, для тебя! (ну и для себя тоже, скоро он мне понадобиться)
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
14.01.2015, 22:52 46
Night Ranger, да спасибо!
Вот можно же сделать красивый и для всех версий excel удобный календарь, что мелкософтовцы так избегают его?
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
05.02.2015, 03:52 47
Так закажите!

«А мужики-то не знают!»
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
01.03.2015, 01:42 48
И ещё завалявшийся пример: excel2010.ru/tryuk-89-kak-dobavit-element-upravleniya-kalendar-v-lyubuyu-rabochuyu-knigu-excel.html
0
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 1
27.01.2016, 03:03 49
Цитата Сообщение от riko_ltd Посмотреть сообщение
В проложении файл с надстройкой календаря.
Кидай в ЭксельСтарт - и на любой ячейке с форматом дата - при наведении будет появляться иконка календаря.
Большое спасибо) Ваша надстройка очень помогла.
0
0 / 0 / 0
Регистрация: 26.02.2020
Сообщений: 1
26.02.2020, 19:46 50
Господа, всем доброго дня
Подскажите пожалуйста, как прикрутить всплывающий календарь к полю (TextBox) формы (UserForm)
Чтобы по аналогии с ячейкой, после её выделения всплывало окно календаря и заполняло то самое поле (TextBox)
С ячейкой понятно

Visual Basic
1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Range("Y9:BA9"), Target) Is Nothing Then slancalendar.Show
End Sub
А с полем не пойму. Заранее спасибо
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
26.02.2020, 21:29 51
Visual Basic
1
Private Sub TextBox1_MouseDown
0
26.02.2020, 21:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2020, 21:29
Помогаю со студенческими работами здесь

Как сделать чтобы при нажатии на bdedit при введении даты появлялся календарь
Я пишу программу для диплома ! там она привязана к базе данных и чтобы добавлять в базу разные...

Как добавить поле с датой (выпадающий календарь)
Помогите пожалуйста, не могу найти как добавить в модель и представление поле с датой так, чтобы...

Как в Excel сделать составные ссылки на ячейки
Скажите пожалуйста как можно реализовать в Excel составные ссылки на ячейки, типа =A(Лист2!А1) ?...

выпадающий список с разными формами ввода при выборе элемента списка
вкратце: на данный момент имеем: &lt;script type=\'text/javascript\'&gt; &lt;!-- function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru