RAN, так ето все готовые календари а так что бы настройка была ето ни как нельзя зделать. З.Ы. ети ссылки я тоже видел З.Ы.Ы, посмотри картинки что я прикреплял...
RAN, так ето все готовые календари а так что бы настройка была ето ни как нельзя зделать. З.Ы. ети ссылки я тоже видел З.Ы.Ы, посмотри картинки что я прикреплял...anger47
Сообщение отредактировал anger47 - Вторник, 26.06.2012, 15:54
Gustav, а ты ещё сможешь что нибуть предложить? у меня в екселе 2010 нету опции календаря в VBA. Как установить или добавить....?
эх, ну, наверное, только отправить в Гугл могу со строкой MSCAL.OCX... почитай, народ тоже парится, но как-то выкручивается... у меня на компе он присутствует потому, что Офис 2010 ставился поверх 2007 - в принципе, тоже вариант... если не лень
Quote (anger47)
Gustav, а ты ещё сможешь что нибуть предложить? у меня в екселе 2010 нету опции календаря в VBA. Как установить или добавить....?
эх, ну, наверное, только отправить в Гугл могу со строкой MSCAL.OCX... почитай, народ тоже парится, но как-то выкручивается... у меня на компе он присутствует потому, что Офис 2010 ставился поверх 2007 - в принципе, тоже вариант... если не лень Gustav
anger47, а в качестве эксперимента вот такой альтернативный "календарь" прямо в ячейке не желаете попробовать? В файле примера работает на ячейках жёлтых диапазонов B8:B10 и D8:D10 Листа1.
Для начала "календарирования" в желтой ячейке туда вводится текущая дата - мышечным дабл-кликом, либо иным способом (например, с помощью Ctrl+; ) .
Далее подкручиваем дату до нужной с помошью стрелок в сочетании с нажатым Alt:
Alt + СтрелкаВверх или СтрелкаВниз - прибавляет или вычитает один день из текущей даты ячейки; Alt + СтрелкаВправо или СтрелкаВлево - прибавляет или вычитает один месяц из текущей даты ячейки.
Если еще надавить и Ctrl, то получаем движение по первым/последним дням месяцев:
Ctrl + Alt + СтрелкаВверх или СтрелкаВниз - перемещение вперед/назад по первым числам месяцев; Ctrl + Alt + СтрелкаВправо или СтрелкаВлево - перемещение вперед/назад по последним числам месяцев.
Держать нажатым один только Alt долго не стоит, так как фокус перейдёт на линейку меню со всеми вытекающими, и стрелочки начнут делать не совсем то, что ожидалось. Если вышеперечисленные сочетания кнопок не нравятся, можно настроить собственные по желанию.
anger47, а в качестве эксперимента вот такой альтернативный "календарь" прямо в ячейке не желаете попробовать? В файле примера работает на ячейках жёлтых диапазонов B8:B10 и D8:D10 Листа1.
Для начала "календарирования" в желтой ячейке туда вводится текущая дата - мышечным дабл-кликом, либо иным способом (например, с помощью Ctrl+; ) .
Далее подкручиваем дату до нужной с помошью стрелок в сочетании с нажатым Alt:
Alt + СтрелкаВверх или СтрелкаВниз - прибавляет или вычитает один день из текущей даты ячейки; Alt + СтрелкаВправо или СтрелкаВлево - прибавляет или вычитает один месяц из текущей даты ячейки.
Если еще надавить и Ctrl, то получаем движение по первым/последним дням месяцев:
Ctrl + Alt + СтрелкаВверх или СтрелкаВниз - перемещение вперед/назад по первым числам месяцев; Ctrl + Alt + СтрелкаВправо или СтрелкаВлево - перемещение вперед/назад по последним числам месяцев.
Держать нажатым один только Alt долго не стоит, так как фокус перейдёт на линейку меню со всеми вытекающими, и стрелочки начнут делать не совсем то, что ожидалось. Если вышеперечисленные сочетания кнопок не нравятся, можно настроить собственные по желанию.Gustav
'месяц вперед/назад по первым числам Application.OnKey "^%{UP}", "MonthAfterFirstDay" 'Ctrl+Alt+СтрелкаВверх Application.OnKey "^%{DOWN}", "MonthBeforeFirstDay" 'Ctrl+Alt+СтрелкаВниз
'месяц вперед/назад по последним числам месяца Application.OnKey "^%{RIGHT}", "MonthAfterLastDay" 'Ctrl+Alt+СтрелкаВправо Application.OnKey "^%{LEFT}", "MonthBeforeLastDay" 'Ctrl+Alt+СтрелкаВлево
Else 'ВЫКЛЮЧЕНИЕ ОБРАБОТЧИКОВ - 'возврат к нормальному поведению комбинаций
Public Sub DayAfter() 'день вперед On Error Resume Next ActiveCell.Value = ActiveCell.Value + 1 On Error GoTo 0 End Sub
Public Sub DayBefore() 'день назад On Error Resume Next ActiveCell.Value = ActiveCell.Value - 1 On Error GoTo 0 End Sub
Public Sub MonthAfter() 'месяц вперед On Error Resume Next ActiveCell.Value = DateAdd("m", 1, ActiveCell.Value) On Error GoTo 0 End Sub
Public Sub MonthBefore() 'месяц назад On Error Resume Next ActiveCell.Value = DateAdd("m", -1, ActiveCell.Value) On Error GoTo 0 End Sub
Public Sub MonthAfterFirstDay() 'месяц вперед по первым числам Dim m As Date On Error Resume Next m = DateAdd("m", 1, ActiveCell.Value) ActiveCell.Value = DateSerial(Year(m), Month(m), 1) On Error GoTo 0 End Sub
Public Sub MonthBeforeFirstDay() 'месяц назад по первым числам Dim m As Date Dim d As Date On Error Resume Next d = ActiveCell.Value If Day(d) > 1 Then ActiveCell.Value = DateSerial(Year(d), Month(d), 1) Else m = DateAdd("m", -1, ActiveCell.Value) ActiveCell.Value = DateSerial(Year(m), Month(m), 1) End If On Error GoTo 0 End Sub
Public Sub MonthAfterLastDay() 'месяц вперед по последним числам Dim m As Date Dim d As Date On Error Resume Next m = DateAdd("m", 1, ActiveCell.Value) d = ActiveCell.Value + 1 If Month(d) <> Month(m) Then 'еще в этом месяце ActiveCell.Value = DateSerial(Year(m), Month(m), 1) - 1 Else 'уже в следующем ActiveCell.Value = DateSerial(Year(m), Month(m) + 1, 1) - 1 End If On Error GoTo 0 End Sub
Public Sub MonthBeforeLastDay() 'месяц назад по последним числам Dim d As Date On Error Resume Next d = ActiveCell.Value ActiveCell.Value = DateSerial(Year(d), Month(d), 1) - 1 On Error GoTo 0 End Sub
[/vba]
Приведу также здесь VBA-код, чтобы сразу было видно что к чему.
Частный код Листа1: [vba]
Code
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, _ Union(Range("B8:B10"), Range("D8:D10")) _ ) Is Nothing Then
Target.Value = Date Cancel = True End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, _ Union(Range("B8:B10"), Range("D8:D10")) _ ) Is Nothing Then
'месяц вперед/назад по первым числам Application.OnKey "^%{UP}", "MonthAfterFirstDay" 'Ctrl+Alt+СтрелкаВверх Application.OnKey "^%{DOWN}", "MonthBeforeFirstDay" 'Ctrl+Alt+СтрелкаВниз
'месяц вперед/назад по последним числам месяца Application.OnKey "^%{RIGHT}", "MonthAfterLastDay" 'Ctrl+Alt+СтрелкаВправо Application.OnKey "^%{LEFT}", "MonthBeforeLastDay" 'Ctrl+Alt+СтрелкаВлево
Else 'ВЫКЛЮЧЕНИЕ ОБРАБОТЧИКОВ - 'возврат к нормальному поведению комбинаций
Public Sub DayAfter() 'день вперед On Error Resume Next ActiveCell.Value = ActiveCell.Value + 1 On Error GoTo 0 End Sub
Public Sub DayBefore() 'день назад On Error Resume Next ActiveCell.Value = ActiveCell.Value - 1 On Error GoTo 0 End Sub
Public Sub MonthAfter() 'месяц вперед On Error Resume Next ActiveCell.Value = DateAdd("m", 1, ActiveCell.Value) On Error GoTo 0 End Sub
Public Sub MonthBefore() 'месяц назад On Error Resume Next ActiveCell.Value = DateAdd("m", -1, ActiveCell.Value) On Error GoTo 0 End Sub
Public Sub MonthAfterFirstDay() 'месяц вперед по первым числам Dim m As Date On Error Resume Next m = DateAdd("m", 1, ActiveCell.Value) ActiveCell.Value = DateSerial(Year(m), Month(m), 1) On Error GoTo 0 End Sub
Public Sub MonthBeforeFirstDay() 'месяц назад по первым числам Dim m As Date Dim d As Date On Error Resume Next d = ActiveCell.Value If Day(d) > 1 Then ActiveCell.Value = DateSerial(Year(d), Month(d), 1) Else m = DateAdd("m", -1, ActiveCell.Value) ActiveCell.Value = DateSerial(Year(m), Month(m), 1) End If On Error GoTo 0 End Sub
Public Sub MonthAfterLastDay() 'месяц вперед по последним числам Dim m As Date Dim d As Date On Error Resume Next m = DateAdd("m", 1, ActiveCell.Value) d = ActiveCell.Value + 1 If Month(d) <> Month(m) Then 'еще в этом месяце ActiveCell.Value = DateSerial(Year(m), Month(m), 1) - 1 Else 'уже в следующем ActiveCell.Value = DateSerial(Year(m), Month(m) + 1, 1) - 1 End If On Error GoTo 0 End Sub
Public Sub MonthBeforeLastDay() 'месяц назад по последним числам Dim d As Date On Error Resume Next d = ActiveCell.Value ActiveCell.Value = DateSerial(Year(d), Month(d), 1) - 1 On Error GoTo 0 End Sub
Gustav, спс огромное, но для меня такой вариант даты будет слишком долго вычисляться. RAN, может подскажет как перенести календарь, что на картинке в форму для календаря7
Gustav, спс огромное, но для меня такой вариант даты будет слишком долго вычисляться. RAN, может подскажет как перенести календарь, что на картинке в форму для календаря7anger47
для меня такой вариант даты будет слишком долго вычисляться.
Да ладно "долго"! Ну, не на 286-м компьютере же работаете в самом деле?! Или боитесь сложности запоминания комбинаций? Можно ж свои придумать. Не знаю, мне идейка по душе пришлась, особенно "пробежка" по последним числам месяцев.
Quote (anger47)
для меня такой вариант даты будет слишком долго вычисляться.
Да ладно "долго"! Ну, не на 286-м компьютере же работаете в самом деле?! Или боитесь сложности запоминания комбинаций? Можно ж свои придумать. Не знаю, мне идейка по душе пришлась, особенно "пробежка" по последним числам месяцев.Gustav
Да легко! Щелкнуть по молоточкам (тем, что на картинке желтенькие) - вывалится окошко (панель элементов). Щелкнуть по окошку правой кнопкой - вывалится список. Найти в списке календарь, поставить крыж, сказать ОК. Цапнуть элемент на панели и перетащить на форму.
Да легко! Щелкнуть по молоточкам (тем, что на картинке желтенькие) - вывалится окошко (панель элементов). Щелкнуть по окошку правой кнопкой - вывалится список. Найти в списке календарь, поставить крыж, сказать ОК. Цапнуть элемент на панели и перетащить на форму.RAN
RAN, в списке что на картинке в верху у меня есть календарь. а в->ToolBox ->Additional Controls - нету((( вот и возникает вопрос Почему? Gustav, дело не в сложности комбинаций, а дело в том что в календаре ето проще и быстрей клацнуть мишкой два раза, чем нажимать комбинации. я ж написал в верху. спасибо за труд, но он мне не подходит (обидеть не хотел)
RAN, в списке что на картинке в верху у меня есть календарь. а в->ToolBox ->Additional Controls - нету((( вот и возникает вопрос Почему? Gustav, дело не в сложности комбинаций, а дело в том что в календаре ето проще и быстрей клацнуть мишкой два раза, чем нажимать комбинации. я ж написал в верху. спасибо за труд, но он мне не подходит (обидеть не хотел)anger47