Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Автор Тема: Напоминание в EXCEL  (Прочитано 40504 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Напоминание в EXCEL
« : 30.01.2009, 14:58:07 »

Доброго времени суток.
вопрос: реально-ли организовать в EXCEL "напоминание" на определенное событие?
в одной ячейке событие, в другой - дата. реально-ли что б по дате выскакивало окошко с напоминанием данного события?
спасибо
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #1 : 30.01.2009, 21:03:45 »

реально-ли организовать в EXCEL "напоминание" на определенное событие?

Реально. Вот инструкция:
  • A1: =СЕГОДНЯ()
  • A8: =<требуемая дата>
  • B8: =ЕСЛИ(A8=A1;ШСООБЩЕНИЕ("Настало время познакомиться с VBA поближе.");"Осталось "&A8-A1&" дней.")

В модуле приложения (Insert -> Module) размещаем код пользовательской функции:
Function ШСООБЩЕНИЕ(Текст As String) As String
  Application.Volatile
  MsgBox Текст
  ШСООБЩЕНИЕ = Текст
End Function
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #2 : 03.02.2009, 12:36:46 »

реально-ли организовать в EXCEL "напоминание" на определенное событие?

Реально. Вот инструкция:
  • A1: =СЕГОДНЯ()
  • A8: =<требуемая дата>
  • B8: =ЕСЛИ(A8=A1;ШСООБЩЕНИЕ("Настало время познакомиться с VBA поближе.");"Осталось "&A8-A1&" дней.")

В модуле приложения (Insert -> Module) размещаем код пользовательской функции:
Function ШСООБЩЕНИЕ(Текст As String) As String
  Application.Volatile
  MsgBox Текст
  ШСООБЩЕНИЕ = Текст
End Function

спасибо
есть пару вопросов:
окошко выпрыгивает при любых действиях с любой ячейкой.
1) можно-ли сделать что б EXCEL сам ставил правильную дату в ячейчку СЕГОДНЯ ()?
2) можно-ли сделать что б напоминания выскакивали один раз при загрузке EXCEL?

спасибо
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #3 : 03.02.2009, 19:16:16 »

можно-ли сделать что б напоминания выскакивали один раз при загрузке EXCEL?

Давайте рассмотрим и такой вариант...
В модуль книги (Alt+F11 -> дважды по ЭтаКнига), размещаем там:
Private Sub Workbook_Open()
  For Each i In Sheets("Лист1").[A1:A29]
    If Format(i, "dd.mm.yy") = Format(Now(), "dd.mm.yy") Then
      MsgBox i.Offset(0, 1).Value
    End If
  Next
End Sub

Теперь, найдя в диапазоне "A1:A29" сегодняшнюю дату, выскочит сообщение из смежной ячейки в "B1:B29".

PS: Возможно, Вам также будет интересна тема: "Музыкальное сообщение по условию".
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #4 : 03.02.2009, 20:03:42 »

еще вопрос:

рельно-ли сделать что б макрос брал дату и текст напоминания из одной ячейки?
(например [03.02.09 "Настало время познакомиться с VBA поближе."]

и еще: можно-ли как-то сделать что б когда выскакивает окошко с сообщением сам EXEL продолжал работать? (т.е. что б можно было вносить изменения в таблицы не закрывая окошко с сообщением)

спасибо
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #5 : 05.02.2009, 22:03:08 »

рельно-ли сделать что б макрос брал дату и текст напоминания из одной ячейки?
и еще: можно-ли как-то сделать что б когда выскакивает окошко с сообщением сам EXEL продолжал работать?

Реально, но вместо сообщения надо будет задействовать UserForm. Итак, инструкция…
В модуле книги ЭтаКнига:
Private Sub Workbook_Open()
  For Each i In Sheets("Лист1").[A1:A29]
    If InStr(1, i, Format(Now(), "dd.mm.yy")) Then
      msgText = Mid(i, InStr(1, i, """") + 1, InStrRev(i, """") - InStr(1, i, """") - 1)
      UserForm1.Show 0
    End If
  Next
End Sub

В обычном модуле (Insert -> Module):
Public msgText As String
Создаём пользовательскую форму (Insert -> UserForm), размещаем на ней Надпись (Label) и модуле формы (F7) прописываем:
Private Sub UserForm_Initialize()
  Me.Label1.Caption = msgText
End Sub
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #6 : 06.02.2009, 16:40:04 »

не получается что...

run-time error '5':
invalid procedure call or argument

пальцем показывает на строчку
msgText = Mid(i, InStr(1, i, """") + 1, InStrRev(i, """") - InStr(1, i, """") - 1)

на всякий случай подопытный файл во вложении.
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #7 : 06.02.2009, 19:43:22 »

не получается что...

Это у Вас бета-тестинг такой: записать все возможные форматы даты-текста? :) Вроде как мы ориентировались на такой:
dd.mm.yy "текст"

Давайте определимся: Вы сейчас нарисовали событий 8 разными вариантами. Т.е. планируете записывать их как ни попадя или же стилизуете под один вышеуказанный? И второй момент: может ли быть несколько записей за одно число? Если да, то как это будет выглядеть: в той же ячейке в новой строке (через Alt+Enter) или несколькими записями, которые надо собрать в одно напоминание?
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #8 : 07.02.2009, 20:17:35 »

это не бета-тестинг, это я пытался подобрать возможные варианты формата записи в ячейке :)

стилизировать надпись лучше так:

7.02.09 Какая-то надпись

т.е. дата в таком формате и надпись без ковычек

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

спасибо
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #9 : 07.02.2009, 20:47:16 »

стилизировать надпись лучше так:
7.02.09 Какая-то надпись
т.е. дата в таком формате и надпись без ковычек

Как заказывали  ;):
в обычный модуль приложения:
Public msgText As Stringв модуль книги (ЭтаКнига):
Private Sub Workbook_Open()
  msgText = ""
  For Each i In Sheets("Лист1").[A1:A29]
    If InStr(1, i, Format(Now(), "d.mm.yy")) Then
      If Len(msgText) > 0 Then msgText = msgText & Chr(10)
      msgText = msgText & Replace(i, Format(Now(), "d.mm.yy"), "")
    End If
  Next
  UserForm1.Show 0
End Sub

Цитировать
было бы замечательно если б напоминание срабатывало как на одну и ту же ячейку с разными датами...

С разными датами это как? Так?:
7.02.09, 10.02.09, 13.02.09-15.02.09 втыкать в исходники
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #10 : 07.02.2009, 23:30:09 »

СУПЕР! заработало!!! спасибо!!!
предлагаю усложнить задачу
примитивно описал в форме макроса.
(основное - разделитель разных событий)
остальное во вложении

p.s.
если реализация сложна - ну значит надо самому знакомится с ВБА ))
спасибо
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #11 : 08.02.2009, 00:13:39 »

предлагаю усложнить задачу
примитивно описал в форме макроса.
(основное - разделитель разных событий)
остальное во вложении

Давайте поправим одну строчку:
     'msgText = msgText & Replace(i, Format(Now(), "d.mm.yy"), "") 'было
      msgText = msgText & i.Offset(0, -1) & Chr(10) & _
                Replace(i, Format(Now(), "d.mm.yy"), "") & Chr(10) & _
                "------------------------------------------" 'стало

И подрисуем заголовок для первой закладки:
Private Sub UserForm_Initialize()
  Me.Label1.Caption = msgText
  Me.MultiPage1.Pages(0).Caption = Format(Now(), "d.mm.yy")
End Sub

А что с остальными закладками? Вы хотите знать события на два дня (два события) вперёд что ли?
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #12 : 08.02.2009, 00:57:07 »

А что с остальными закладками? Вы хотите знать события на два дня (два события) вперёд что ли?
да. закладок много.. что-то я переборщил...

а как на счет что б в одном окне (как первоначальный вариант) собрать все события в таком формате:

дата
номер из столбца А текст из столбца В
напоминание из столбца D (т.е. столбцы идут не подряд, хотелось бы иметь возможность прописывать "нужный" диапазон)
---------------------------------------------------------- \\разделитель
дата
номер из столбца А текст из столбца В
напоминание из столбца D
---------------------------------------------------------- \\разделитель

и еще б что б само окно имело вертикальную прокрутку )
и реально-ли задать диапазон напоминаний не в один столбец, а в несколько (например D1-D29 , F1-F29 и H1-H29) с такой-же структурой отображения как и первый ?
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #13 : 08.02.2009, 01:25:11 »

а как на счет что б в одном окне (как первоначальный вариант) собрать все события в таком формате:...

Да хоть в каком. Чувствуется, на этом не ограничится. ;)
      '...
      msgText = msgText & Format(Now(), "d.mm.yy") & Chr(10) & _
                Cells(i.Row, 1) & " " & Cells(i.Row, 2) & Chr(10) & _
                Replace(i, Format(Now(), "d.mm.yy"), "") & Chr(10) & _
                "------------------------------------------"
      With i.Offset(0, 1) 'плюс ещё один столбец
        If Len(.Value) > 0 Then
          msgText = msgText & Chr(10) & Left(.Value, InStr(1, .Value, " ")) & Chr(10) & _
                    Cells(i.Row, 1) & " " & Cells(i.Row, 2) & Chr(10) & _
                    Mid(.Value, InStr(1, .Value, " ") + 1, 999) & Chr(10) & _
                    "------------------------------------------"
        End If
      End With
    End If
  Next
  UserForm1.Show 0
End Sub

Цитировать
и еще б что б само окно имело вертикальную прокрутку )
Оно само, вернее Label, не имеет прокрутки. Вам надо либо размещать события в ListBox, либо прикручивать элемент ScrollBar, но это отдельная история, выходящая за рамки темы.
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #14 : 08.02.2009, 02:18:30 »

не работает (
показывает только "сегодняшние" события, следующие дни не показывает...

не могу понять как прописаны диапазоны ячеек, в которых ведется поиск напоминаний. например поиск должен происходить столбцах от D до G и M а заголовок к напоминанию в столбцах A и В тех же строках, где есть напоминание.
можно чуть подробнее про описание диапазонов поиска? (ну так что б от А1 до А100 + от В1 до В100 +... ну или как-то так... или так нельзя?)
спасибо
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #15 : 08.02.2009, 12:08:57 »

не работает (
показывает только "сегодняшние" события, следующие дни не показывает...

А я и не подцеплял следующие.  ;)
См. вложение - там в коде указано где менять диапазон и как выглядит несмежный.
Плюс прикрутил ListBox.


***Файл временно удален из-за подозрения на вирусы.***
« Последнее редактирование: 22.02.2010, 11:36:21 от Алексей Шмуйлович »
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #16 : 08.02.2009, 20:33:53 »

не работает (
показывает только "сегодняшние" события, следующие дни не показывает...

А я и не подцеплял следующие.  ;)
См. вложение - там в коде указано где менять диапазон и как выглядит несмежный.
Плюс прикрутил ListBox.

что-то не так.. ругается на слово format  в шестой строке. говорит "Compile error: Can't find project or library"
что делать?
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #17 : 10.02.2009, 22:05:04 »

говорит "Compile error: Can't find project or library"
что делать?

Первое, что следует проверить, когда не найдена библиотека:
Tools -> References на наличие строки:
MISSING: <название библиотеки>

И если такая есть, то переподключить эту библиотему через кн. "Brawse..."

А ещё можно уточнить на чём именно затык, если строку:
If InStr(1, i, Format(Now(), "d.mm.yy")) Then Call Text(i)разложить на след. конструкцию:
    vr = Now()
    vrF = Format(vr, "d.mm.yy")
    If InStr(1, i, vrF) Then
      Call Text(i)
    End If
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #18 : 11.02.2009, 13:35:17 »

странно как-то.. опция References не активна..
переместил все коды в старый файл - ЗАРАБОТАЛО!! :)
спасибо!
Записан

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #19 : 15.02.2009, 11:12:08 »

Несколько вопросов:
1) каким образом можно задать диапазоны поиска для разных листов книги (в формате "Лист1" - С1:O100, "Лист2" - В1:В100 и т.д..)
2) можно-ли организовать обратную связь из окошка напоминания к ячейке, которая вызвала напоминание (к примеру для изменения даты или содержания напоминания) либо выделение этой ячейки.
3) как организовать поиск дат к примеру на 14 дней вперед? 14 раз прописать этот код добавляя каждый раз +1?
   For Each i In myRange 'ищем сегодня
       If InStr(1, i, Format(Now(), "d.mm.yy")) Then Call Text(i)
     Next
4) как организовать перенос по строкам напоминаний, которые не вмещается в выделенную область в ListBox'е

спасибо
« Последнее редактирование: 15.02.2009, 15:44:10 от Cartman »
Записан

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #20 : 28.02.2009, 12:11:48 »

как организовать закрытие формы по нажатию Esc ?
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #21 : 28.02.2009, 12:22:04 »

как организовать закрытие формы по нажатию Esc ?

Надо написать реакцию на событие KeyDown, KeyUp или KeyPress.

Допустим на отжатие "Esc" будет так:
Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 27 Then Unload Me
End Sub
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #22 : 28.02.2009, 13:16:04 »

не получается (
я так понимаю код вставлять в свойства формы? но не закрывает окошко
Записан

Шпец Докапыч

  • Ветеран
  • *****
  • Уважение: +189/-4
  • Оффлайн Оффлайн
  • Сообщений: 1 919
  • ОБЛАДАТЕЛЬ УНИКАЛЬНЫХ НАВЫКОВ!!! :)
Re: Напоминание в EXCEL
« Ответ #23 : 28.02.2009, 13:19:38 »

я так понимаю код вставлять в свойства формы?

Создайте это событие для тех элементов, расположенных на форме, в которых может находиться фокус, когда возникнет желание нажать на "Esc". ;)
Записан
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Cartman

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 26
Re: Напоминание в EXCEL
« Ответ #24 : 01.03.2009, 17:56:16 »

элементов вроде и не густо, а не получается...

Private Sub ListBox1_Click()

End Sub

Private Sub ListBox_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 27 Then Unload Me
End Sub

Private Sub UserForm_Initialize()
  Me.ListBox1.List = Split(msgText, Chr(10))
End Sub

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 27 Then Unload Me
End Sub

что не так?

p.s.
еще вопросик: как добавить еще один диапазон на другом листе книги? пробовал уже по всякому но так и не получилось (
Set myRange = Sheets("Лист1").Range("C6:P500")

спасибо
Записан
 



Темы без ответов

14.08.2020 15:13 Импорт из Эксель в Аксесс 294
24.01.2020 14:03 На диаграмме Ганта несоответствие оси Y 439
09.08.2019 14:09 Макрос для заполнения таблиц через форму 2134
18.07.2019 16:02 Рассылка почты из Excel при помощи почтовой программы TheBAT! 1782
09.07.2019 20:39 Кредит с уменьшением периода выплат 1899
28.05.2019 21:09 Сделать несколько скриптов для рабочей таблицы 2506
05.03.2019 17:00 Последовательный вывод таблиц Excel в один документ Word без шаблона 2511
05.03.2019 09:29 Нежелательные изменение размеров колонтитула при редактировании 2325
07.02.2019 01:36 Как удалить дубликаты из выпадающего связанного списка? 2394
20.01.2019 12:38 Все варианты частичного суммирования 2567





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.192 секунд. Запросов: 145.