Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Как увязать объект календарь с ячейкой ехсеl.

Автор ctac, 13.11.2008, 16:55

« назад - далее »

ctac

Подскажите пожайлуста как увязать объект календарь с ячейкой ехсеl. Заранее спасибо.

Шпец Докапыч

Цитата: ctac от 13.11.2008, 16:55
Подскажите, пожалуйста, как увязать объект "Календарь" с ячейкой Eхсеl?

Андрей делал как-то файлик "Calendar"  с календарём на форме, запускающейся по кнопочке. Там в модуле листа (ПКМ по ярлычку -> Исходный текст) есть код:
Private Sub CommandButton1_Click()
    UserForm999.Show
End Sub


Напишите, вместо него:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$B$1" Then
      Cancel = True
      UserForm999.Show
    End If
End Sub


Тогда календарик будет открываться на двойной щелчок по ячейке.
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

ctac


Шпец Докапыч

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

ctac


Alexey_moscow

Здравствуйте!

Представьте, что вам надо ввести дату в ячейку Эксель. Можно банально вбить число. Но мне надо сделать так, чтобы при щелчке на данной ячейке появлялся календарь Windows (тот, который можно увидеть при настройке даты и времени на компьютере, если щелкнуть по часикам в правом нижнем углу экрана). Видел такую штуку у начальника на прошлой работе. Подскажите, как это сделать, пожалуйста.

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

Буду благодарен, если кто поможет.

Шпец Докапыч

Цитата: Alexey_moscow от 16.12.2008, 11:49
Мне надо сделать так, чтобы при щелчке на данной ячейке появлялся календарь Windows

Вопрос перемещён к ответу. ;)

Способ для 2007-го Excel ничем не отличается от 2003-ей версии, разве что элемент управления там называется "Календарь 12.0" (а был 11.0).
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Alexey_moscow

#7
Спасибо. Ваш пример работает, а в тот лист, что я вставил код, пишет "Run-time Error code 424"

Сложно, конечно, без знания Visual basic что-то делать.

Скажите, а как прописать в коде не одну ячейку, а диапазоны? К примеру от B5 до B10 и от D5 до D10?

Шпец Докапыч

Цитата: Alexey_moscow от 16.12.2008, 12:58
Сложно, конечно, без знания Visual basic что-то делать.

Частично восполним пробел. ;) Для того, чтобы пересобрать календарик в ваш файл, нужно:
1) поменять условие в модуле листа.
вместо строчки:
If Target.Address = "$B$1" Then
пишем:
If IsEmpty(Intersect(Target, Union([B5:B10], [D5:D10]))) Then

2) подправить код формы, на которой расположен эл. упр. "Календарь".

  • в редакторе кода найти "UserForm999";
  • дважды по ней кликнуть: видим форму календарика;
  • F7: видим код модуля формы;
  • вместо Range("b1") пишем ActiveCell

3) перенести форму в новый файл.

  • - из редактора файла-примера: File -> Export File... -> UserForm999.frm
  • - в новом файле: File -> Import File... -> выбираем только что сохранённый.

Готово!  8)
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Астроном

Доброй ночи! Прилагаю архив. В данном архиве один файл.
Что  надо делать: Достать файл из архива. Поместить файл  в папку автозапуска Excel (C:\Program Files\Microsoft Office\OFFICE11\XLSTART). В итоге получаем возможность в любой момент вызвать календарь правой кнопкой мыши (Pick from calendar). Рядом с теми ячейками, где уже есть дата будет появляться маленький всплывающий значок, по которому тоже можно щелкнуть, чтобы появился красивый календарь.
Жить - хорошо, а хорошо жить - ещё лучше.

Alex19196

Каким образом можно использовать данную функцию несколько раз на листе (устанавливать дату через календарь в разных клетках) ?
При написании: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$H$1" Then
      Cancel = True
      UserForm999.Show
     End If
End Sub
во второй раз, выдает следущее: Compile error: Ambiguous name detected: Worksheet_BeforeDoubleClick . Буду признателен за ответ

Шпец Докапыч

Цитата: Alex19196 от 06.02.2009, 16:32
Каким образом можно использовать данную функцию несколько раз на листе (устанавливать дату через календарь в разных клетках) ?

Например так:
If Target.Address = "$B$1" Or Target.Address = "$H$1" Then
или так:
If InStr(1, "$B$1_$H$1_$X$9", Target.Address) > 0 Then
или так:
If Target.Column = 3 And Target.Row > 5 Then 'для ячеек столбца «С» после 5-ой ячейки.
Или даже так:
  If Target.Address = "$B$1" Then
    Cancel = True
    UserForm999.Show
  ElseIf Target.Address = "$H$1" Then
    Cancel = True
    UserForm999.Show
  End If
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Alex19196