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