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

Вход

Регистрация

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

 

= Мир MS Excel/Запрос на продолжение при закрытии книги - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрос на продолжение при закрытии книги (Макросы/Sub)
Запрос на продолжение при закрытии книги
light26 Дата: Понедельник, 20.02.2017, 23:15 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Всем привет.
Написал такой код (Сам! Используя имеющиеся макросы, но сам!!! Это для меня предмет гордости :D )
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("G9,G11,G13,G15,G17,G19,G21,G23,G27,G33,G35,G37,G39,G41,G43,G45,G47,G49,G51,G53,G55,G57").Locked = True
    Range("G59,G61,G63,G65,G67,G69,G73,G75,G77,G79,G81,G83,G85,G87,G89,G90,G92,G94,G96,G98,G100,G102,G104").Locked = True
    Range("G108,G110,G112,G114,G116,G118,G120,G122,G124,G126,G128,G130,G132,G134,G136,G138,G140,G142,G145,G147,G149,G151,G153").Locked = True
Dim reply As Integer
    reply = MsgBox("Вы указали план на следующую неделю?", vbYesNo, "Запрос на продолжение")
        If reply = vbNo Then
                 MsgBox "Укажите плановые задания на следующую неделю"
        ElseIf reply = vbYes Then Exit Sub
        End If
  End Sub
[/vba]В принципе, он работает, но немного не так как хотелось бы.
Сейчас после нажатия "Нет" следует MsgBox "Укажите плановые задания на следующую неделю" и потом "Сохранить" "Не сохранять", "Отмена".
А требуется чтобы после выбора "Нет", и закрытия MsgBox "Укажите плановые задания на следующую неделю" пользователь оказывался в определенной ячейке.
Еще неплохо было бы, чтобы макрос выполнял проверку вводились ли значения хоть в одну из ячеек заданного диапазона и, если нет, то не давал закрыть книгу, пока не введешь эти значения (пусть даже нулевые)
Помогите, если не жалко :)
К сообщению приложен файл: -1.xls (91.5 Kb)


Я не волшебник. Я только учусь
 
Ответить
СообщениеВсем привет.
Написал такой код (Сам! Используя имеющиеся макросы, но сам!!! Это для меня предмет гордости :D )
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("G9,G11,G13,G15,G17,G19,G21,G23,G27,G33,G35,G37,G39,G41,G43,G45,G47,G49,G51,G53,G55,G57").Locked = True
    Range("G59,G61,G63,G65,G67,G69,G73,G75,G77,G79,G81,G83,G85,G87,G89,G90,G92,G94,G96,G98,G100,G102,G104").Locked = True
    Range("G108,G110,G112,G114,G116,G118,G120,G122,G124,G126,G128,G130,G132,G134,G136,G138,G140,G142,G145,G147,G149,G151,G153").Locked = True
Dim reply As Integer
    reply = MsgBox("Вы указали план на следующую неделю?", vbYesNo, "Запрос на продолжение")
        If reply = vbNo Then
                 MsgBox "Укажите плановые задания на следующую неделю"
        ElseIf reply = vbYes Then Exit Sub
        End If
  End Sub
[/vba]В принципе, он работает, но немного не так как хотелось бы.
Сейчас после нажатия "Нет" следует MsgBox "Укажите плановые задания на следующую неделю" и потом "Сохранить" "Не сохранять", "Отмена".
А требуется чтобы после выбора "Нет", и закрытия MsgBox "Укажите плановые задания на следующую неделю" пользователь оказывался в определенной ячейке.
Еще неплохо было бы, чтобы макрос выполнял проверку вводились ли значения хоть в одну из ячеек заданного диапазона и, если нет, то не давал закрыть книгу, пока не введешь эти значения (пусть даже нулевые)
Помогите, если не жалко :)

Автор - light26
Дата добавления - 20.02.2017 в 23:15
krosav4ig Дата: Понедельник, 20.02.2017, 23:35 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте.
Если правильно понял
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Range("G9,G11,G13,G15,G17,G19,G21,G23,G27,G33,G35,G37,G39,G41,G43,G45,G47,G49,G51,G53,G55,G57").Locked = True
    Range("G59,G61,G63,G65,G67,G69,G73,G75,G77,G79,G81,G83,G85,G87,G89,G90,G92,G94,G96,G98,G100,G102,G104").Locked = True
    Range("G108,G110,G112,G114,G116,G118,G120,G122,G124,G126,G128,G130,G132,G134,G136,G138,G140,G142,G145,G147,G149,G151,G153").Locked = True
    Dim reply As Integer
    reply = MsgBox("Вы указали план на следующую неделю?", vbYesNo, "Запрос на продолжение")
    If reply = vbNo Then
        MsgBox "Укажите плановые задания на следующую неделю"
        Cancel = True
        Application.Goto [K9], True 'пользователь оказывается в ячейке K9
    ElseIf reply = vbYes Then Exit Sub
    End If
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 20.02.2017, 23:36
 
Ответить
СообщениеЗдравствуйте.
Если правильно понял
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Range("G9,G11,G13,G15,G17,G19,G21,G23,G27,G33,G35,G37,G39,G41,G43,G45,G47,G49,G51,G53,G55,G57").Locked = True
    Range("G59,G61,G63,G65,G67,G69,G73,G75,G77,G79,G81,G83,G85,G87,G89,G90,G92,G94,G96,G98,G100,G102,G104").Locked = True
    Range("G108,G110,G112,G114,G116,G118,G120,G122,G124,G126,G128,G130,G132,G134,G136,G138,G140,G142,G145,G147,G149,G151,G153").Locked = True
    Dim reply As Integer
    reply = MsgBox("Вы указали план на следующую неделю?", vbYesNo, "Запрос на продолжение")
    If reply = vbNo Then
        MsgBox "Укажите плановые задания на следующую неделю"
        Cancel = True
        Application.Goto [K9], True 'пользователь оказывается в ячейке K9
    ElseIf reply = vbYes Then Exit Sub
    End If
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 20.02.2017 в 23:35
_Boroda_ Дата: Понедельник, 20.02.2017, 23:45 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вадим, так хотел?
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim reply As Integer
    reply = MsgBox("Вы указали план на следующую неделю?", vbYesNo, "Запрос на продолжение")
    If reply = vbNo Then
        MsgBox "Укажите плановые задания на следующую неделю"
        Range("G9").Select
        Cancel = True
    End If
    r1_ = Range("A" & Rows.Count).End(xlUp).Row
    For i = 9 To r1_
        If Range("A" & i) <> "" Then
            If Range("G" & i) = "" Then
                MsgBox "Заполните все плановые значения в столбце G"
                Cancel = True
                Exit Sub
            End If
        End If
    Next i
End Sub
[/vba]
К сообщению приложен файл: -1_1.xlsm (45.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВадим, так хотел?
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim reply As Integer
    reply = MsgBox("Вы указали план на следующую неделю?", vbYesNo, "Запрос на продолжение")
    If reply = vbNo Then
        MsgBox "Укажите плановые задания на следующую неделю"
        Range("G9").Select
        Cancel = True
    End If
    r1_ = Range("A" & Rows.Count).End(xlUp).Row
    For i = 9 To r1_
        If Range("A" & i) <> "" Then
            If Range("G" & i) = "" Then
                MsgBox "Заполните все плановые значения в столбце G"
                Cancel = True
                Exit Sub
            End If
        End If
    Next i
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 20.02.2017 в 23:45
light26 Дата: Понедельник, 20.02.2017, 23:55 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Application.Goto [K9], True 'пользователь оказывается в ячейке K9
А разве запрос на сохранение не появится?
Вадим, так хотел?
Не знаю пока. Сейчас проверю, только блокировку ячеек верну :)


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Понедельник, 20.02.2017, 23:56
 
Ответить
Сообщение
Application.Goto [K9], True 'пользователь оказывается в ячейке K9
А разве запрос на сохранение не появится?
Вадим, так хотел?
Не знаю пока. Сейчас проверю, только блокировку ячеек верну :)

Автор - light26
Дата добавления - 20.02.2017 в 23:55
light26 Дата: Вторник, 21.02.2017, 00:05 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Cancel = True
эта команда автоматически закрывает диалоговое окно Сохранить,Не сохранять, Отмена?
 r1_ = Range("A" & Rows.Count).End(xlUp).Row
For i = 9 To r1_
If Range("A" & i) <> "" Then
а вот тут я ничего не понял.
И если выбираем "НЕТ", то "Укажите плановые задания на следующую неделю" и "Заполните все плановые значения в столбце G" должны появляться в одном окне, Хотя это не критично.
Файл обязательно сохранять с поддержкой макросов? Он ведь и так работает?


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Вторник, 21.02.2017, 00:06
 
Ответить
Сообщение
Cancel = True
эта команда автоматически закрывает диалоговое окно Сохранить,Не сохранять, Отмена?
 r1_ = Range("A" & Rows.Count).End(xlUp).Row
For i = 9 To r1_
If Range("A" & i) <> "" Then
а вот тут я ничего не понял.
И если выбираем "НЕТ", то "Укажите плановые задания на следующую неделю" и "Заполните все плановые значения в столбце G" должны появляться в одном окне, Хотя это не критично.
Файл обязательно сохранять с поддержкой макросов? Он ведь и так работает?

Автор - light26
Дата добавления - 21.02.2017 в 00:05
_Boroda_ Дата: Вторник, 21.02.2017, 00:10 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
Cancel = True
[/vba] просто прекращает сохранение файла. А окно - это следствие
[vba]
Код
If Range("G" & i) = "" Then
[/vba] - да, столбец для проверки
[vba]
Код
r1_ = Range("A" & Rows.Count).End(xlUp).Row
[/vba] - ищем последнюю заполненную строку в столбце А
[vba]
Код
For i = 9 To r1_
[/vba] - от девятой строки до r1_
[vba]
Код
If Range("A" & i) <> "" Then
[/vba] - если в столбце А строки i что-то есть, то ...
Чуть изменил макрос, см вложение
К сообщению приложен файл: -1_2.xlsm (46.2 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
Cancel = True
[/vba] просто прекращает сохранение файла. А окно - это следствие
[vba]
Код
If Range("G" & i) = "" Then
[/vba] - да, столбец для проверки
[vba]
Код
r1_ = Range("A" & Rows.Count).End(xlUp).Row
[/vba] - ищем последнюю заполненную строку в столбце А
[vba]
Код
For i = 9 To r1_
[/vba] - от девятой строки до r1_
[vba]
Код
If Range("A" & i) <> "" Then
[/vba] - если в столбце А строки i что-то есть, то ...
Чуть изменил макрос, см вложение

Автор - _Boroda_
Дата добавления - 21.02.2017 в 00:10
light26 Дата: Вторник, 21.02.2017, 00:16 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
_Boroda_, да, спасибо, теперь понял...почти :)
Ковыряться да пробовать уже потом буду. А чичас спать :)


Я не волшебник. Я только учусь
 
Ответить
Сообщение_Boroda_, да, спасибо, теперь понял...почти :)
Ковыряться да пробовать уже потом буду. А чичас спать :)

Автор - light26
Дата добавления - 21.02.2017 в 00:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрос на продолжение при закрытии книги (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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