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

Вход

Регистрация

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

 

= Мир MS Excel/Блокировка ввода данных в следующей строке - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Блокировка ввода данных в следующей строке
Kioto Дата: Понедельник, 03.04.2017, 13:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброго времени суток, уважаемые, пожалуйста, скажите можно ли заблокировать ввод данных в следующей строке, пока в выбранной не заполнены некоторые столбцы, знаю, что можно сделать, через userform, но можно ли обойтись без этого.
Нужно, чтобы если в столбце F введены данные, то нельзя заполнять данные в другой строке, пока не заполненны столбцы G,J,K,O, но, если в столбце O имеется слово "скидка", то ввод описанных столбцов выше необязателен
К сообщению приложен файл: 0347322.xls (30.0 Kb)
 
Ответить
СообщениеДоброго времени суток, уважаемые, пожалуйста, скажите можно ли заблокировать ввод данных в следующей строке, пока в выбранной не заполнены некоторые столбцы, знаю, что можно сделать, через userform, но можно ли обойтись без этого.
Нужно, чтобы если в столбце F введены данные, то нельзя заполнять данные в другой строке, пока не заполненны столбцы G,J,K,O, но, если в столбце O имеется слово "скидка", то ввод описанных столбцов выше необязателен

Автор - Kioto
Дата добавления - 03.04.2017 в 13:55
_Boroda_ Дата: Понедельник, 03.04.2017, 14:35 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16885
Репутация: 6599 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Смотрите Данные - Проверка данных
В файле _2 там сразу формула
Код
=($F2<>"")*($O2<>"скидка")*(($G2="")+($J2="")+($K2="")+($O2=""))=0

В файле _1 - там именованный диапазон (посмотреть можно, нажав Контрл F3) c аналогичной формулой
К сообщению приложен файл: 0347322_1.xls (32.5 Kb) · 0347322_2.xls (32.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеСмотрите Данные - Проверка данных
В файле _2 там сразу формула
Код
=($F2<>"")*($O2<>"скидка")*(($G2="")+($J2="")+($K2="")+($O2=""))=0

В файле _1 - там именованный диапазон (посмотреть можно, нажав Контрл F3) c аналогичной формулой

Автор - _Boroda_
Дата добавления - 03.04.2017 в 14:35
sboy Дата: Понедельник, 03.04.2017, 15:06 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Вариант макросом, в модуль листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 6).End(xlUp).Row
If Target.Row <> lr + 1 Then Exit Sub
    If Not Cells(lr, 15) = "скидка" Then
        If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
        MsgBox "Заполните предыдущую строку"
        Rows(lr).Select
        End If
    End If
End Sub
[/vba]
К сообщению приложен файл: 5343185.xls (34.5 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Вариант макросом, в модуль листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 6).End(xlUp).Row
If Target.Row <> lr + 1 Then Exit Sub
    If Not Cells(lr, 15) = "скидка" Then
        If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
        MsgBox "Заполните предыдущую строку"
        Rows(lr).Select
        End If
    End If
End Sub
[/vba]

Автор - sboy
Дата добавления - 03.04.2017 в 15:06
Kioto Дата: Понедельник, 03.04.2017, 17:44 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, sboy, огромнейшее всем спасибо.
Макрос очень понравился, но при вводе данных в ошибочном месте, после уведомления данные в ячейках всё равно остаются, можно ли, чтобы он их стирал?
 
Ответить
Сообщение_Boroda_, sboy, огромнейшее всем спасибо.
Макрос очень понравился, но при вводе данных в ошибочном месте, после уведомления данные в ячейках всё равно остаются, можно ли, чтобы он их стирал?

Автор - Kioto
Дата добавления - 03.04.2017 в 17:44
Kioto Дата: Понедельник, 03.04.2017, 19:16 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Понятно в чём причина, я убрала выделение.


Сообщение отредактировал Kioto - Вторник, 04.04.2017, 05:19
 
Ответить
СообщениеПонятно в чём причина, я убрала выделение.

Автор - Kioto
Дата добавления - 03.04.2017 в 19:16
gizon Дата: Понедельник, 03.04.2017, 21:41 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
...


Сообщение отредактировал gizon - Понедельник, 03.04.2017, 21:42
 
Ответить
Сообщение...

Автор - gizon
Дата добавления - 03.04.2017 в 21:41
Kioto Дата: Вторник, 04.04.2017, 05:22 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Можно ли, пожалуйста, добавить в начале кода условие, чтобы работники начинали вводить данные со столбца F, иначе остаётся простор для жульничества, а так они сначала обязательно заполняют столбец F, а остальное по макросу.
 
Ответить
СообщениеМожно ли, пожалуйста, добавить в начале кода условие, чтобы работники начинали вводить данные со столбца F, иначе остаётся простор для жульничества, а так они сначала обязательно заполняют столбец F, а остальное по макросу.

Автор - Kioto
Дата добавления - 04.04.2017 в 05:22
Kioto Дата: Вторник, 04.04.2017, 07:03 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Прописала, чтобы сначала столбец F заполняли, но теперь выводятся уведомления, вместо одного выходят два, а главное сам столбец F заблокирован

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 6).End(xlUp).Row
bk = Cells(lr, 7) = "" And Cells(lr, 8) = "" And Cells(lr, 9) = "" And Cells(lr, 10) = "" And Cells(lr, 11) = "" And Cells(lr, 12) = "" And Cells(lr, 13) = "" And Cells(lr, 14) = "" And Cells(lr, 15) = "" And Cells(lr, 16) = "" And Cells(lr, 17) = "" And Cells(lr, 18) = "" And Cells(lr, 19) = "" And Cells(lr, 20) = "" And Cells(lr, 21) = ""
If Target.Row <> lr + 1 Then Exit Sub
If Cells(lr, 6) <> bk Then
MsgBox "Заполните столбец F"
Rows(lr).Select

If Not Cells(lr, 15) = "скидка" Then
If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
MsgBox "Заполните предыдущую строку"
Rows(lr).Select
End If
End If
End If
End Sub
[/vba]


Сообщение отредактировал Kioto - Вторник, 04.04.2017, 07:09
 
Ответить
СообщениеПрописала, чтобы сначала столбец F заполняли, но теперь выводятся уведомления, вместо одного выходят два, а главное сам столбец F заблокирован

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 6).End(xlUp).Row
bk = Cells(lr, 7) = "" And Cells(lr, 8) = "" And Cells(lr, 9) = "" And Cells(lr, 10) = "" And Cells(lr, 11) = "" And Cells(lr, 12) = "" And Cells(lr, 13) = "" And Cells(lr, 14) = "" And Cells(lr, 15) = "" And Cells(lr, 16) = "" And Cells(lr, 17) = "" And Cells(lr, 18) = "" And Cells(lr, 19) = "" And Cells(lr, 20) = "" And Cells(lr, 21) = ""
If Target.Row <> lr + 1 Then Exit Sub
If Cells(lr, 6) <> bk Then
MsgBox "Заполните столбец F"
Rows(lr).Select

If Not Cells(lr, 15) = "скидка" Then
If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
MsgBox "Заполните предыдущую строку"
Rows(lr).Select
End If
End If
End If
End Sub
[/vba]

Автор - Kioto
Дата добавления - 04.04.2017 в 07:03
sboy Дата: Вторник, 04.04.2017, 11:15 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Если правильно понял...
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 6).End(xlUp).Row
If Target.Row <> lr + 1 Then Exit Sub
    If Not Cells(lr, 15) = "скидка" Then
        If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
        MsgBox "Заполните предыдущую строку"
        Rows(lr).Select
        Exit Sub
        End If
    End If
If Target.Address <> Cells(Target.Row, 6).Address And Cells(Target.Row, 6).Value = "" Then
        MsgBox "Ввод начинается со столбца F"
        Cells(Target.Row, 6).Select
End If
End Sub
[/vba]
К сообщению приложен файл: 0609697.xls (37.5 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеЕсли правильно понял...
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 6).End(xlUp).Row
If Target.Row <> lr + 1 Then Exit Sub
    If Not Cells(lr, 15) = "скидка" Then
        If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
        MsgBox "Заполните предыдущую строку"
        Rows(lr).Select
        Exit Sub
        End If
    End If
If Target.Address <> Cells(Target.Row, 6).Address And Cells(Target.Row, 6).Value = "" Then
        MsgBox "Ввод начинается со столбца F"
        Cells(Target.Row, 6).Select
End If
End Sub
[/vba]

Автор - sboy
Дата добавления - 04.04.2017 в 11:15
Kioto Дата: Вторник, 04.04.2017, 11:46 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
sboy, да, именно так, преогромная благодарность, только не могли бы Вы глянуть на этот код, нужно, чтобы, если в столбце 15 стоит слово скидка, тогда необходимо заполнить столбец 16 и 17

[vba]
Код
lr = Cells(Rows.Count, 6).End(xlUp).Row
If Target.Row <> lr + 1 Then Exit Sub
    If Not Cells(lr, 15) = "скидка" Then  ' если в столбце 15 слово "скидка", то разблокировать следующую строку - а нужно, что если введено слово скидка, то заполнить столбец 15 и 16
        If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
        MsgBox "Заполните предыдущую строку"
        Rows(lr).Select
        Exit Sub
        End If
    End If

  '   If Cells(lr, 15) = "скидка" Then         ' если в столбце 15 слово "скида", то заполнить 16 и 17
  '          If Cells(lr, 16) = "" Or Cells(lr, 17) = "" Then
  '              MsgBox "Заполните предыдущую строку"
  '              Rows(lr).Select
  '      End If

If Target.Address <> Cells(Target.Row, 6).Address And Cells(Target.Row, 6).Value = "" Then
        MsgBox "Заполните столбец F"
        Cells(Target.Row, 6).Select
End If
[/vba]


Сообщение отредактировал Kioto - Вторник, 04.04.2017, 12:35
 
Ответить
Сообщениеsboy, да, именно так, преогромная благодарность, только не могли бы Вы глянуть на этот код, нужно, чтобы, если в столбце 15 стоит слово скидка, тогда необходимо заполнить столбец 16 и 17

[vba]
Код
lr = Cells(Rows.Count, 6).End(xlUp).Row
If Target.Row <> lr + 1 Then Exit Sub
    If Not Cells(lr, 15) = "скидка" Then  ' если в столбце 15 слово "скидка", то разблокировать следующую строку - а нужно, что если введено слово скидка, то заполнить столбец 15 и 16
        If Cells(lr, 7) = "" Or Cells(lr, 10) = "" Or Cells(lr, 11) = "" Or Cells(lr, 15) = "" Then
        MsgBox "Заполните предыдущую строку"
        Rows(lr).Select
        Exit Sub
        End If
    End If

  '   If Cells(lr, 15) = "скидка" Then         ' если в столбце 15 слово "скида", то заполнить 16 и 17
  '          If Cells(lr, 16) = "" Or Cells(lr, 17) = "" Then
  '              MsgBox "Заполните предыдущую строку"
  '              Rows(lr).Select
  '      End If

If Target.Address <> Cells(Target.Row, 6).Address And Cells(Target.Row, 6).Value = "" Then
        MsgBox "Заполните столбец F"
        Cells(Target.Row, 6).Select
End If
[/vba]

Автор - Kioto
Дата добавления - 04.04.2017 в 11:46
Kioto Дата: Вторник, 04.04.2017, 14:29 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Макрос теперь работает, всё поправила под себя,но столкнулась с такой проблемой, работники начали растягивать дату и блокирование отключается и все столбцы, которые должны быть обязательно заполнены не подвержены контролю и могут опять не заполняться, можно ли запретить растягивание или сделать какую-то проверку ранее введённых строк?
 
Ответить
СообщениеМакрос теперь работает, всё поправила под себя,но столкнулась с такой проблемой, работники начали растягивать дату и блокирование отключается и все столбцы, которые должны быть обязательно заполнены не подвержены контролю и могут опять не заполняться, можно ли запретить растягивание или сделать какую-то проверку ранее введённых строк?

Автор - Kioto
Дата добавления - 04.04.2017 в 14:29
  • Страница 1 из 1
  • 1
Поиск:

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