Вводится в ячейку значение. Идет проверка, если "Название показателя" и вышестоящая ячейка не пустая, то значение заносится. Если вышестоящая ячейка пустая, то введенное значение удаляется. Условия: Значение может вводиться в ячейку независимо он названия показателя. Т.е. можно внести значение в нижестоящий показатель, даже если в вышестоящем показателе значение пусто. Но по каждому показателю должно поочередно вводиться значение по каждому месяцу.
Надеюсь все понятно изложила
вот скрипт, что пыталась сделать, но не получается сделать проверку на название показателя(((
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Stolbec = Target.Column Stroka = Target.Row
If Target.Column = "Выполнение производственной программы по бурению БС и БГС" Then If Cells(Stroka - 1, 9) = "" Or Cells(Stroka - 1, 10) ="" Then MsgBox "Не заполнены показатели за предыдущий период", _ vbInformation, "ОШИБКА"
Вводится в ячейку значение. Идет проверка, если "Название показателя" и вышестоящая ячейка не пустая, то значение заносится. Если вышестоящая ячейка пустая, то введенное значение удаляется. Условия: Значение может вводиться в ячейку независимо он названия показателя. Т.е. можно внести значение в нижестоящий показатель, даже если в вышестоящем показателе значение пусто. Но по каждому показателю должно поочередно вводиться значение по каждому месяцу.
Надеюсь все понятно изложила
вот скрипт, что пыталась сделать, но не получается сделать проверку на название показателя(((
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Stolbec = Target.Column Stroka = Target.Row
If Target.Column = "Выполнение производственной программы по бурению БС и БГС" Then If Cells(Stroka - 1, 9) = "" Or Cells(Stroka - 1, 10) ="" Then MsgBox "Не заполнены показатели за предыдущий период", _ vbInformation, "ОШИБКА"
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Target = "" Then Exit Sub If Cells(Target.Row, 1) = "" Then'здесь можно проверить конкретный текст MsgBox "Нету наименования, проставьте его, в столбце А в этой строке", _ vbInformation, "ОШИБКА": Target.Activate End If If Target(0, 1) = "" Then MsgBox "Не заполнены показатели за предыдущий период", _ vbInformation, "ОШИБКА": Target(0, 1).Activate End If End Sub
[/vba]
Цитата
Надеюсь все понятно изложила
А то! Как понял. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Target = "" Then Exit Sub If Cells(Target.Row, 1) = "" Then'здесь можно проверить конкретный текст MsgBox "Нету наименования, проставьте его, в столбце А в этой строке", _ vbInformation, "ОШИБКА": Target.Activate End If If Target(0, 1) = "" Then MsgBox "Не заполнены показатели за предыдущий период", _ vbInformation, "ОШИБКА": Target(0, 1).Activate End If End Sub
Применила. Все работает. Вот только после сообщения "Не заполнены показатели за предыдущий период" введенное значение не очищается((( а нужно чтоб удалялось.
gling, ого, спасибо.
Применила. Все работает. Вот только после сообщения "Не заполнены показатели за предыдущий период" введенное значение не очищается((( а нужно чтоб удалялось.Ilsiyar
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Target = "" Then Exit Sub If Cells(Target.Row, 1) = "" Then 'здесь можно проверить конкретный текст MsgBox "Нету наименования, проставьте его, в столбце А в этой строке", _ vbInformation, "ОШИБКА": Target.Activate End If If Target(0, 1) = "" Then MsgBox "Не заполнены показатели за предыдущий период", _ vbInformation, "ОШИБКА": Target(0, 1).Activate Target.Value = "" End If End Sub
[/vba]
Тогда так [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Target = "" Then Exit Sub If Cells(Target.Row, 1) = "" Then 'здесь можно проверить конкретный текст MsgBox "Нету наименования, проставьте его, в столбце А в этой строке", _ vbInformation, "ОШИБКА": Target.Activate End If If Target(0, 1) = "" Then MsgBox "Не заполнены показатели за предыдущий период", _ vbInformation, "ОШИБКА": Target(0, 1).Activate Target.Value = "" End If End Sub
На 2-ом листе "Качественные" выбираю фильтром год (2014). И начинаю вводить значение в любую организацию через одну ячейку (т.е. stroka-1). Почему то макрос не срабатывает, хотя вышестоящая ячейка пустая!!! Значение вводится и не удаляется. Именно если выбрать 2014 год. Почему так???
gling, ага норма. Но((( опять есть "Но"
Прилагаю файл.
На 2-ом листе "Качественные" выбираю фильтром год (2014). И начинаю вводить значение в любую организацию через одну ячейку (т.е. stroka-1). Почему то макрос не срабатывает, хотя вышестоящая ячейка пустая!!! Значение вводится и не удаляется. Именно если выбрать 2014 год. Почему так???Ilsiyar
Когда фильтром скрываете годы отличные от 2014 некоторые строки с значениями скрываются и Вы из не видите. В примере желтые ячейки столбец М находятся после значений. Попробуйте отсортировать таблицу по году и после использовав фильтр повторить заполнение ячеек. У меня всё работает нормально.
Когда фильтром скрываете годы отличные от 2014 некоторые строки с значениями скрываются и Вы из не видите. В примере желтые ячейки столбец М находятся после значений. Попробуйте отсортировать таблицу по году и после использовав фильтр повторить заполнение ячеек. У меня всё работает нормально.gling