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

Вход

Регистрация

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

 

= Мир MS Excel/Вызов макроса при редактировании ячейки - Мир MS Excel

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

Excel 2010, 2013
Добрый день.

Вводится в ячейку значение. Идет проверка, если "Название показателя" и вышестоящая ячейка не пустая, то значение заносится. Если вышестоящая ячейка пустая, то введенное значение удаляется.
Условия: Значение может вводиться в ячейку независимо он названия показателя. Т.е. можно внести значение в нижестоящий показатель, даже если в вышестоящем показателе значение пусто. Но по каждому показателю должно поочередно вводиться значение по каждому месяцу.

Надеюсь все понятно изложила ;)

вот скрипт, что пыталась сделать, но не получается сделать проверку на название показателя(((

[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, "ОШИБКА"

' чтоб не происходило зацикливание
Application.EnableEvents = False
Cells(Stroka, 9) = ""
Cells(Stroka, 10) = ""
Application.EnableEvents = True

End If
End If

End Sub
[/vba]
К сообщению приложен файл: ____.xlsx (31.7 Kb)
 
Ответить
СообщениеДобрый день.

Вводится в ячейку значение. Идет проверка, если "Название показателя" и вышестоящая ячейка не пустая, то значение заносится. Если вышестоящая ячейка пустая, то введенное значение удаляется.
Условия: Значение может вводиться в ячейку независимо он названия показателя. Т.е. можно внести значение в нижестоящий показатель, даже если в вышестоящем показателе значение пусто. Но по каждому показателю должно поочередно вводиться значение по каждому месяцу.

Надеюсь все понятно изложила ;)

вот скрипт, что пыталась сделать, но не получается сделать проверку на название показателя(((

[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, "ОШИБКА"

' чтоб не происходило зацикливание
Application.EnableEvents = False
Cells(Stroka, 9) = ""
Cells(Stroka, 10) = ""
Application.EnableEvents = True

End If
End If

End Sub
[/vba]

Автор - Ilsiyar
Дата добавления - 13.11.2014 в 16:32
gling Дата: Четверг, 13.11.2014, 19:13 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2525
Репутация: 678 ±
Замечаний: 0% ±

2010
Цитата
Надеюсь все понятно изложила
А то! Как понял.
[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

[/vba]


ЯД-41001506838083

Сообщение отредактировал gling - Четверг, 13.11.2014, 19:15
 
Ответить
Сообщение
Цитата
Надеюсь все понятно изложила
А то! Как понял.
[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

[/vba]

Автор - gling
Дата добавления - 13.11.2014 в 19:13
Ilsiyar Дата: Воскресенье, 16.11.2014, 14:16 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010, 2013
gling, :) ого, спасибо.

Применила. Все работает. Вот только после сообщения "Не заполнены показатели за предыдущий период" введенное значение не очищается((( а нужно чтоб удалялось.
 
Ответить
Сообщениеgling, :) ого, спасибо.

Применила. Все работает. Вот только после сообщения "Не заполнены показатели за предыдущий период" введенное значение не очищается((( а нужно чтоб удалялось.

Автор - Ilsiyar
Дата добавления - 16.11.2014 в 14:16
gling Дата: Воскресенье, 16.11.2014, 15:53 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2525
Репутация: 678 ±
Замечаний: 0% ±

2010
Тогда так [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
[/vba]


ЯД-41001506838083
 
Ответить
СообщениеТогда так [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
[/vba]

Автор - gling
Дата добавления - 16.11.2014 в 15:53
Ilsiyar Дата: Понедельник, 17.11.2014, 16:34 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010, 2013
gling, ага норма. Но((( опять есть "Но"

Прилагаю файл.

На 2-ом листе "Качественные" выбираю фильтром год (2014). И начинаю вводить значение в любую организацию через одну ячейку
(т.е. stroka-1). Почему то макрос не срабатывает, хотя вышестоящая ячейка пустая!!! Значение вводится и не удаляется. Именно если выбрать 2014 год. Почему так???
 
Ответить
Сообщениеgling, ага норма. Но((( опять есть "Но"

Прилагаю файл.

На 2-ом листе "Качественные" выбираю фильтром год (2014). И начинаю вводить значение в любую организацию через одну ячейку
(т.е. stroka-1). Почему то макрос не срабатывает, хотя вышестоящая ячейка пустая!!! Значение вводится и не удаляется. Именно если выбрать 2014 год. Почему так???

Автор - Ilsiyar
Дата добавления - 17.11.2014 в 16:34
Ilsiyar Дата: Понедельник, 17.11.2014, 19:20 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010, 2013
Файл весит 555 Кб. Поэтому не могу скинуть сюда. И архив максимальный делаю, все равно до 100 КБ не доходит.

Как можно отправить Вам файл?
 
Ответить
СообщениеФайл весит 555 Кб. Поэтому не могу скинуть сюда. И архив максимальный делаю, все равно до 100 КБ не доходит.

Как можно отправить Вам файл?

Автор - Ilsiyar
Дата добавления - 17.11.2014 в 19:20
Ilsiyar Дата: Понедельник, 17.11.2014, 19:35 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010, 2013
Уменьшила как смогла.
К сообщению приложен файл: ____.xlsm (90.2 Kb)
 
Ответить
СообщениеУменьшила как смогла.

Автор - Ilsiyar
Дата добавления - 17.11.2014 в 19:35
gling Дата: Понедельник, 17.11.2014, 20:35 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2525
Репутация: 678 ±
Замечаний: 0% ±

2010
Когда фильтром скрываете годы отличные от 2014 некоторые строки с значениями скрываются и Вы из не видите. В примере желтые ячейки столбец М находятся после значений. Попробуйте отсортировать таблицу по году и после использовав фильтр повторить заполнение ячеек. У меня всё работает нормально.
К сообщению приложен файл: 1969134.xlsm (25.7 Kb)


ЯД-41001506838083

Сообщение отредактировал gling - Понедельник, 17.11.2014, 20:38
 
Ответить
СообщениеКогда фильтром скрываете годы отличные от 2014 некоторые строки с значениями скрываются и Вы из не видите. В примере желтые ячейки столбец М находятся после значений. Попробуйте отсортировать таблицу по году и после использовав фильтр повторить заполнение ячеек. У меня всё работает нормально.

Автор - gling
Дата добавления - 17.11.2014 в 20:35
Ilsiyar Дата: Понедельник, 17.11.2014, 21:06 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010, 2013
gling, спасибо большое! Разобралась! скиньте свой номер телефона, хоть денежку на него закину! :)
 
Ответить
Сообщениеgling, спасибо большое! Разобралась! скиньте свой номер телефона, хоть денежку на него закину! :)

Автор - Ilsiyar
Дата добавления - 17.11.2014 в 21:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вызов макроса при редактировании ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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