Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание напоминания - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание напоминания (Макросы/Sub)
Создание напоминания
Sacredcom Дата: Понедельник, 01.04.2019, 07:13 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, не получается найти ошибку почему перестают работать напоминания если в строке большой список номеров телефонов, программа выдает ошибку "Run-time error '1004':
Method 'OnTime' of object ^Application' failed" когда закрепляешь задачу на напоминания нажимая кнопку в верху таблицы. Макрос выдает ошибку если в ячейки много информации, как можно убрать данную ошибку?

[vba]
Код
Код Макроса:
Option Explicit

Sub tt()
Dim c As Range, t$

For Each c In [I1:I2000]
If c > Now Then
t = Replace(c.Offset(, -8), """", """""")
Application.OnTime c, "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & c.Offset(, -3) & """,""" & t & "'"
End If
Next
MsgBox "Задачи поставлены!"
End Sub

Sub Задача(s1 As Date, s2$, s3$, s4$)
MsgBox "[" & "]" & s1 & "Напоминание: " & s2 & " в " & s4 & s3
End Sub

Ругается на строку :

Application.OnTime c, "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & c.Offset(, -3) & """,""" & t & "'"
[/vba]
К сообщению приложен файл: 7104543.xlsm (88.5 Kb)


Сообщение отредактировал Sacredcom - Понедельник, 01.04.2019, 07:46
 
Ответить
СообщениеДобрый день, не получается найти ошибку почему перестают работать напоминания если в строке большой список номеров телефонов, программа выдает ошибку "Run-time error '1004':
Method 'OnTime' of object ^Application' failed" когда закрепляешь задачу на напоминания нажимая кнопку в верху таблицы. Макрос выдает ошибку если в ячейки много информации, как можно убрать данную ошибку?

[vba]
Код
Код Макроса:
Option Explicit

Sub tt()
Dim c As Range, t$

For Each c In [I1:I2000]
If c > Now Then
t = Replace(c.Offset(, -8), """", """""")
Application.OnTime c, "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & c.Offset(, -3) & """,""" & t & "'"
End If
Next
MsgBox "Задачи поставлены!"
End Sub

Sub Задача(s1 As Date, s2$, s3$, s4$)
MsgBox "[" & "]" & s1 & "Напоминание: " & s2 & " в " & s4 & s3
End Sub

Ругается на строку :

Application.OnTime c, "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & c.Offset(, -3) & """,""" & t & "'"
[/vba]

Автор - Sacredcom
Дата добавления - 01.04.2019 в 07:13
_Boroda_ Дата: Понедельник, 01.04.2019, 09:26 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
255 символов максимум


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение255 символов максимум

Автор - _Boroda_
Дата добавления - 01.04.2019 в 09:26
Sacredcom Дата: Понедельник, 01.04.2019, 09:49 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
255 символов максимум

Проверил документ там менее 255 символов, есть файл вложения посмотрите пожалуйста, для специалиста в коде VBA это будет пустяковой задачей, а я уже второй день над ней голову ломаю %)
 
Ответить
Сообщение
255 символов максимум

Проверил документ там менее 255 символов, есть файл вложения посмотрите пожалуйста, для специалиста в коде VBA это будет пустяковой задачей, а я уже второй день над ней голову ломаю %)

Автор - Sacredcom
Дата добавления - 01.04.2019 в 09:49
_Boroda_ Дата: Понедельник, 01.04.2019, 09:57 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Нет, не в ячейке 255 символов, а в куске
[vba]
Код
"'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & c.Offset(, -3) & """,""" & t & "'"
[/vba]
Вот так попробуйте
обрезает телефоны так, чтобы в итоге получилось 255 или меньше символов
[vba]
Код
Sub tt()
    Dim c As Range, t$, x1_, x2_
    For Each c In [I1:I2000]
        If c > Now Then
            t = Replace(c.Offset(, -8), """", """""")
            x1_ = Len("'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & """,""" & t & "'")
            x2_ = Left(c.Offset(, -3), 255 - x1_)
            Application.OnTime c, "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & x2_ & """,""" & t & "'"
        End If
    Next
    MsgBox "Задачи поставлены!"
End Sub
[/vba]
К сообщению приложен файл: 7104543_1.xlsm (84.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНет, не в ячейке 255 символов, а в куске
[vba]
Код
"'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & c.Offset(, -3) & """,""" & t & "'"
[/vba]
Вот так попробуйте
обрезает телефоны так, чтобы в итоге получилось 255 или меньше символов
[vba]
Код
Sub tt()
    Dim c As Range, t$, x1_, x2_
    For Each c In [I1:I2000]
        If c > Now Then
            t = Replace(c.Offset(, -8), """", """""")
            x1_ = Len("'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & """,""" & t & "'")
            x2_ = Left(c.Offset(, -3), 255 - x1_)
            Application.OnTime c, "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & x2_ & """,""" & t & "'"
        End If
    Next
    MsgBox "Задачи поставлены!"
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 01.04.2019 в 09:57
Sacredcom Дата: Понедельник, 01.04.2019, 15:18 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Спасибо что показали как решить проблему с ограничением на количество символов :) Протестирую на большей таблице
 
Ответить
Сообщение_Boroda_, Спасибо что показали как решить проблему с ограничением на количество символов :) Протестирую на большей таблице

Автор - Sacredcom
Дата добавления - 01.04.2019 в 15:18
Sacredcom Дата: Пятница, 05.04.2019, 05:39 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Заметил через несколько дней, напоминания не работают если документ был закрыт и повторно открыт, как это можно исправить?
 
Ответить
СообщениеЗаметил через несколько дней, напоминания не работают если документ был закрыт и повторно открыт, как это можно исправить?

Автор - Sacredcom
Дата добавления - 05.04.2019 в 05:39
_Boroda_ Дата: Пятница, 05.04.2019, 12:14 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не совсем так. Не документ, а Excel. OnTime метод для Application
Но Вам же по-любому не нужна запущенная задача при закрытом Excel? Поэтому можно на открытие Excel (вернее, на открытие файла Персонал) повесить автооткрытие этого файла с автозапуском макроса простановки задач и закрытия файла.
Другими словами: закрыли Excel - задачи Вам все равно уже не нужны, открыли Excel - задачи проставились заново

** Если так пойдет, то это уже другая тема


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе совсем так. Не документ, а Excel. OnTime метод для Application
Но Вам же по-любому не нужна запущенная задача при закрытом Excel? Поэтому можно на открытие Excel (вернее, на открытие файла Персонал) повесить автооткрытие этого файла с автозапуском макроса простановки задач и закрытия файла.
Другими словами: закрыли Excel - задачи Вам все равно уже не нужны, открыли Excel - задачи проставились заново

** Если так пойдет, то это уже другая тема

Автор - _Boroda_
Дата добавления - 05.04.2019 в 12:14
Sacredcom Дата: Суббота, 06.04.2019, 14:56 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, подскажите как можно реализовать поиск чтобы он сразу из напоминания макрос взял название фирмы и перешёл в указанную ячейку? Либо я окошечке напоминания была кнопка например с названием перейти, нажав на нее, курсор сразу устанавливается на ячейку фирмы которую он показал в напоминании


Сообщение отредактировал Sacredcom - Суббота, 06.04.2019, 14:57
 
Ответить
Сообщение_Boroda_, подскажите как можно реализовать поиск чтобы он сразу из напоминания макрос взял название фирмы и перешёл в указанную ячейку? Либо я окошечке напоминания была кнопка например с названием перейти, нажав на нее, курсор сразу устанавливается на ячейку фирмы которую он показал в напоминании

Автор - Sacredcom
Дата добавления - 06.04.2019 в 14:56
_Boroda_ Дата: Суббота, 06.04.2019, 17:17 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вот это хорошая мысль, искать не нужно будет
[vba]
Код
Sub tt()
    Dim c As Range, t$, x1_, x2_
    For Each c In [I1:I2000]
        If c > Now Then
            t = Replace(c.Offset(, -8), """", """""")
            x1_ = Len("'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & """,""" & t & "'")
            x2_ = Left(c.Offset(, -3), 255 - x1_ - 7)
            uu = "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & x2_ & """,""" & t & """,""" & c.Address(0, 0) & "'"
            Application.OnTime c, uu
        End If
    Next
    MsgBox "Задачи поставлены!"
End Sub

Sub Задача(s1 As Date, s2$, s3$, s4$, s5$)
    MsgBox "[" & "]" & s1 & "Напоминание: " & s2 & " в " & s4 & s3
    Application.Goto reference:=Range(s5).Offset(, -8), scroll:=True
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот это хорошая мысль, искать не нужно будет
[vba]
Код
Sub tt()
    Dim c As Range, t$, x1_, x2_
    For Each c In [I1:I2000]
        If c > Now Then
            t = Replace(c.Offset(, -8), """", """""")
            x1_ = Len("'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & """,""" & t & "'")
            x2_ = Left(c.Offset(, -3), 255 - x1_ - 7)
            uu = "'Задача """ & TimeValue(c) & """,""" & c.Offset(, 1) & """,""" & x2_ & """,""" & t & """,""" & c.Address(0, 0) & "'"
            Application.OnTime c, uu
        End If
    Next
    MsgBox "Задачи поставлены!"
End Sub

Sub Задача(s1 As Date, s2$, s3$, s4$, s5$)
    MsgBox "[" & "]" & s1 & "Напоминание: " & s2 & " в " & s4 & s3
    Application.Goto reference:=Range(s5).Offset(, -8), scroll:=True
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 06.04.2019 в 17:17
Sacredcom Дата: Воскресенье, 07.04.2019, 03:50 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, исправил немного допечатал пропущено было uu в строке - [vba]
Код
Dim c As Range, t$, x1_, x2_,uu
[/vba]


Сообщение отредактировал Sacredcom - Воскресенье, 07.04.2019, 03:52
 
Ответить
Сообщение_Boroda_, исправил немного допечатал пропущено было uu в строке - [vba]
Код
Dim c As Range, t$, x1_, x2_,uu
[/vba]

Автор - Sacredcom
Дата добавления - 07.04.2019 в 03:50
_Boroda_ Дата: Воскресенье, 07.04.2019, 14:58 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Оно не пропущено, оно принципиально не написано. Я не объявляю переменные без необходимости (с моей точки зрения). В большинстве случаев это ничего не дает, кроме лишнего геморроя.
Вы спросите, а почему же тогда в первом макросе объявил? Да потому, что там у Вас была обязаловка
Option Explicit
, а потом ее уже не было

И да, я неоднократно писал на форуме, что это только мое решение и я никого не призываю ему следовать, тем более, что это против общепринятых правил написания кода


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеОно не пропущено, оно принципиально не написано. Я не объявляю переменные без необходимости (с моей точки зрения). В большинстве случаев это ничего не дает, кроме лишнего геморроя.
Вы спросите, а почему же тогда в первом макросе объявил? Да потому, что там у Вас была обязаловка
Option Explicit
, а потом ее уже не было

И да, я неоднократно писал на форуме, что это только мое решение и я никого не призываю ему следовать, тем более, что это против общепринятых правил написания кода

Автор - _Boroda_
Дата добавления - 07.04.2019 в 14:58
Sacredcom Дата: Понедельник, 08.04.2019, 11:40 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, как можно исключить подобные знаки чтобы макрос не обращал на них внимания, и не ограничивал в выборе символов
 
Ответить
Сообщение_Boroda_, как можно исключить подобные знаки чтобы макрос не обращал на них внимания, и не ограничивал в выборе символов

Автор - Sacredcom
Дата добавления - 08.04.2019 в 11:40
_Boroda_ Дата: Понедельник, 08.04.2019, 12:14 | Сообщение № 13
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
1. Не писать их
2. Заменить Реплейсом


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение1. Не писать их
2. Заменить Реплейсом

Автор - _Boroda_
Дата добавления - 08.04.2019 в 12:14
Sacredcom Дата: Понедельник, 08.04.2019, 12:25 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Мне попадался пример там ошибку вызывали кавычки, эту ошибку смогли обойти дописав макрос, попробую найти.
 
Ответить
СообщениеМне попадался пример там ошибку вызывали кавычки, эту ошибку смогли обойти дописав макрос, попробую найти.

Автор - Sacredcom
Дата добавления - 08.04.2019 в 12:25
Sacredcom Дата: Понедельник, 08.04.2019, 15:22 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Решение: [vba]
Код
Sub Задача(s1 As Date, s2$, s3$, s4$, s5$)
    t = " " & Replace(c, """", """""")
    MsgBox "[" & "]" & s1 & "Напоминание: " & s2 & " в " & s4 & s3
    Application.Goto reference:=Range(s5).Offset(, -8), scroll:=True
End Sub
[/vba]
 
Ответить
СообщениеРешение: [vba]
Код
Sub Задача(s1 As Date, s2$, s3$, s4$, s5$)
    t = " " & Replace(c, """", """""")
    MsgBox "[" & "]" & s1 & "Напоминание: " & s2 & " в " & s4 & s3
    Application.Goto reference:=Range(s5).Offset(, -8), scroll:=True
End Sub
[/vba]

Автор - Sacredcom
Дата добавления - 08.04.2019 в 15:22
_Boroda_ Дата: Понедельник, 08.04.2019, 15:39 | Сообщение № 16
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А я Вам что написал?
Заменить Реплейсом

Но только я бы менял в основном макросе в куске
[vba]
Код
c.Offset(, 1)
[/vba]
, тогда в 255 символов можно больше нужного запихать


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА я Вам что написал?
Заменить Реплейсом

Но только я бы менял в основном макросе в куске
[vba]
Код
c.Offset(, 1)
[/vba]
, тогда в 255 символов можно больше нужного запихать

Автор - _Boroda_
Дата добавления - 08.04.2019 в 15:39
Sacredcom Дата: Понедельник, 08.04.2019, 15:56 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не работает снова мой вариант, я только несколько дней VBA осваиваю)), сначала работал теперь не работает, снова ругается на эти !!!
 
Ответить
СообщениеНе работает снова мой вариант, я только несколько дней VBA осваиваю)), сначала работал теперь не работает, снова ругается на эти !!!

Автор - Sacredcom
Дата добавления - 08.04.2019 в 15:56
_Boroda_ Дата: Понедельник, 08.04.2019, 16:13 | Сообщение № 18
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У меня тоже Ваш вариант не работает. Я, правда, его не вижу, но по-любому не работает


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ меня тоже Ваш вариант не работает. Я, правда, его не вижу, но по-любому не работает

Автор - _Boroda_
Дата добавления - 08.04.2019 в 16:13
Sacredcom Дата: Понедельник, 08.04.2019, 16:27 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Попробовал в основном коде но знаний недостаточно. Пример во вложении :)
К сообщению приложен файл: 7108698.xlsm (88.8 Kb)


Сообщение отредактировал Sacredcom - Понедельник, 08.04.2019, 16:29
 
Ответить
СообщениеПопробовал в основном коде но знаний недостаточно. Пример во вложении :)

Автор - Sacredcom
Дата добавления - 08.04.2019 в 16:27
_Boroda_ Дата: Понедельник, 08.04.2019, 16:58 | Сообщение № 20
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А что просто не написать текстом "Звонок"?
[vba]
Код
Sub tt()
    Dim c As Range, t$, x1_, x2_
    For Each c In Cells(2, 9).Resize(Cells(Rows.Count, 9).End(3).Row - 1)
        If c > Now Then
            t = Replace(c.Offset(, -8), """", """""")
            x1_ = Len("'Задача """ & TimeValue(c) & """,""Звонок"",""" & """,""" & t & "'")
            x2_ = Left(c.Offset(, -3), 255 - x1_ - 7)
            uu = "'Задача """ & TimeValue(c) & """,""Звонок"",""" & x2_ & """,""" & t & """,""" & c.Address(0, 0) & "'"
            Application.OnTime c, uu
        End If
    Next
    MsgBox "Задачи поставлены!"
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА что просто не написать текстом "Звонок"?
[vba]
Код
Sub tt()
    Dim c As Range, t$, x1_, x2_
    For Each c In Cells(2, 9).Resize(Cells(Rows.Count, 9).End(3).Row - 1)
        If c > Now Then
            t = Replace(c.Offset(, -8), """", """""")
            x1_ = Len("'Задача """ & TimeValue(c) & """,""Звонок"",""" & """,""" & t & "'")
            x2_ = Left(c.Offset(, -3), 255 - x1_ - 7)
            uu = "'Задача """ & TimeValue(c) & """,""Звонок"",""" & x2_ & """,""" & t & """,""" & c.Address(0, 0) & "'"
            Application.OnTime c, uu
        End If
    Next
    MsgBox "Задачи поставлены!"
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 08.04.2019 в 16:58
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание напоминания (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!