Подскажите пожалуйста, как сделать, чтобы в диапазон ячеек C3:F3 вносились только буквы А,Б,В,Г,(если пишутся с маленькой буквы, то автоматом переключались на большие, и если пустая ячейка то при закрытии файла выскакивало сообщение), а в диапазон C4:F6 числа или слово рем.
Подскажите пожалуйста, как сделать, чтобы в диапазон ячеек C3:F3 вносились только буквы А,Б,В,Г,(если пишутся с маленькой буквы, то автоматом переключались на большие, и если пустая ячейка то при закрытии файла выскакивало сообщение), а в диапазон C4:F6 числа или слово рем.roman66rus
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [C3:F3]) Is Nothing Then Application.EnableEvents = False If Left(Target, 1) Like "[А-Яа-я Ёё]" Then Target = UCase(Target) ElseIf Target = "" Then Else MsgBox "только буквы А-Я" Target.Activate: Target = "" End If Application.EnableEvents = True ElseIf Not Intersect(Target, [C4:F6]) Is Nothing Then Application.EnableEvents = False IsNum = Application.WorksheetFunction.IsNumber(Target) If Not IsNum Then If Target.Value <> "рем" Then If Target.Value <> "" Then _ MsgBox "только числа или 'рем'": Target.Activate: Target = "" Application.EnableEvents = True End If End Sub
[/vba]
в книге [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) Set rng1 = [C3:F3] For Each cell In rng1 If cell = "" Then Cancel = True: MsgBox "Заполните данные в [C3:F3]": Exit For Next End Sub
[/vba]
макросы в коде листа и книги в листе [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [C3:F3]) Is Nothing Then Application.EnableEvents = False If Left(Target, 1) Like "[А-Яа-я Ёё]" Then Target = UCase(Target) ElseIf Target = "" Then Else MsgBox "только буквы А-Я" Target.Activate: Target = "" End If Application.EnableEvents = True ElseIf Not Intersect(Target, [C4:F6]) Is Nothing Then Application.EnableEvents = False IsNum = Application.WorksheetFunction.IsNumber(Target) If Not IsNum Then If Target.Value <> "рем" Then If Target.Value <> "" Then _ MsgBox "только числа или 'рем'": Target.Activate: Target = "" Application.EnableEvents = True End If End Sub
[/vba]
в книге [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) Set rng1 = [C3:F3] For Each cell In rng1 If cell = "" Then Cancel = True: MsgBox "Заполните данные в [C3:F3]": Exit For Next End Sub
Leanna, JayBhagavan, СПАСИБО, Это почти то что нужно. [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) Set rng1 = [C3:F3] '(МОЖНО ЛИ ЗДЕСЬ ЗАДАТЬ ТОЛЬКО ОДНУ ЯЧЕЙКУ, НО ТАК ЧТОБЫ ОНА МЕНЯЛАСЬ НА СЛЕДУЮЩЕЮ ПРИ КАЖДОМ ОТКРЫТИИ ФАЙЛА) For Each cell In rng1 If cell = "" Then Cancel = True: MsgBox "Заполните данные в [C3:F3]": Exit For Next End Sub
[/vba]
Leanna, JayBhagavan, СПАСИБО, Это почти то что нужно. [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) Set rng1 = [C3:F3] '(МОЖНО ЛИ ЗДЕСЬ ЗАДАТЬ ТОЛЬКО ОДНУ ЯЧЕЙКУ, НО ТАК ЧТОБЫ ОНА МЕНЯЛАСЬ НА СЛЕДУЮЩЕЮ ПРИ КАЖДОМ ОТКРЫТИИ ФАЙЛА) For Each cell In rng1 If cell = "" Then Cancel = True: MsgBox "Заполните данные в [C3:F3]": Exit For Next End Sub
[offtop]Однако... "Старайтесь прилагать файлы в версии Excel 2003-го офиса(xls), так как эти файлы могут открыть пользователи с любой версией Excel, в отличие от файлов версий Excel 2007/2010/2013 (xlsх)."
[offtop]Однако... "Старайтесь прилагать файлы в версии Excel 2003-го офиса(xls), так как эти файлы могут открыть пользователи с любой версией Excel, в отличие от файлов версий Excel 2007/2010/2013 (xlsх)."TimSha