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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление строки с подтверждением - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строки с подтверждением (Макросы/Sub)
Удаление строки с подтверждением
Kioto Дата: Воскресенье, 08.10.2017, 09:27 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Всем здравствуйте, подскажите, пожалуйста, как реализовать удаление строки по условию?

У меня имеется таблица с данными, но данные в ней находятся на 14 строке и ниже, нужно, чтобы при удалении данных со столбца O14:O150 вылезало сообщение и при положительном ответе удалялась выбранная строка, если ответ отрицательный, то данные остаются и строка не удаляется.
Сообщение не формой, а такого типа:

[vba]
Код
    Delete = MsgBox("Удалить строку?", 48 + 4, "Удаление строки", vbYesNo, BOX)
    If Delete <> vbYes Then Exit Sub
[/vba]
К сообщению приложен файл: primer.xls(15Kb)
 
Ответить
СообщениеВсем здравствуйте, подскажите, пожалуйста, как реализовать удаление строки по условию?

У меня имеется таблица с данными, но данные в ней находятся на 14 строке и ниже, нужно, чтобы при удалении данных со столбца O14:O150 вылезало сообщение и при положительном ответе удалялась выбранная строка, если ответ отрицательный, то данные остаются и строка не удаляется.
Сообщение не формой, а такого типа:

[vba]
Код
    Delete = MsgBox("Удалить строку?", 48 + 4, "Удаление строки", vbYesNo, BOX)
    If Delete <> vbYes Then Exit Sub
[/vba]

Автор - Kioto
Дата добавления - 08.10.2017 в 09:27
nilem Дата: Воскресенье, 08.10.2017, 10:23 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1343
Репутация: 477 ±
Замечаний: 0% ±

Excel 2013
Kioto, привет
наверное, так (в модуль листа Лист1)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("O14:O150")) Is Nothing Then Exit Sub
If Len(Target) Then Exit Sub
If MsgBox("Удалить строку?", 36, "Удаление строки") = vbYes Then Target.EntireRow.Delete
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеKioto, привет
наверное, так (в модуль листа Лист1)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("O14:O150")) Is Nothing Then Exit Sub
If Len(Target) Then Exit Sub
If MsgBox("Удалить строку?", 36, "Удаление строки") = vbYes Then Target.EntireRow.Delete
End Sub
[/vba]

Автор - nilem
Дата добавления - 08.10.2017 в 10:23
Kioto Дата: Воскресенье, 08.10.2017, 10:37 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Kioto
Дата добавления - 08.10.2017 в 10:37
nilem Дата: Воскресенье, 08.10.2017, 10:45 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1343
Репутация: 477 ±
Замечаний: 0% ±

Excel 2013
попробуйте вот так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("O14:O150")) Is Nothing Then Exit Sub
If Len(Target) Then Exit Sub
If MsgBox("Удалить строку?", 36, "Удаление строки") = vbYes Then
    Target.EntireRow.Delete
Else
    With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
    End With
End If
End Sub
[/vba]


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Воскресенье, 08.10.2017, 10:50
 
Ответить
Сообщениепопробуйте вот так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("O14:O150")) Is Nothing Then Exit Sub
If Len(Target) Then Exit Sub
If MsgBox("Удалить строку?", 36, "Удаление строки") = vbYes Then
    Target.EntireRow.Delete
Else
    With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
    End With
End If
End Sub
[/vba]

Автор - nilem
Дата добавления - 08.10.2017 в 10:45
Kioto Дата: Воскресенье, 08.10.2017, 11:02 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
nilem, Да всё отлично работает, спасибо огромнейшее. Вы очень сильно помогли.
 
Ответить
Сообщениеnilem, Да всё отлично работает, спасибо огромнейшее. Вы очень сильно помогли.

Автор - Kioto
Дата добавления - 08.10.2017 в 11:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строки с подтверждением (Макросы/Sub)
Страница 1 из 11
Поиск:

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