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

Вход

Регистрация

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

 

= Мир MS Excel/Изменить действие макроса - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменить действие макроса (Макросы Sub)
Изменить действие макроса
Андрей М Дата: Понедельник, 27.01.2014, 22:27 | Сообщение № 1
Группа: Гости
Имеется рабочая таблица в которой это макрос удаляет строки по одной. В таблице в столбце А перечислены:
Участок, Агрегат, Механизм, Узел, Деталь, Субдеталь1, Субдеталь2, Субдеталь3.
Требуется чтобы нижеприведенный макрос позволял удалять строки из следующих требований:
1 если удаляется строка "Участок", то удаляются вместе с ней и все следующие строки;
2 если удаляется строка "Агрегат", то удаляются вместе с ней и все следующие строки, а строка "Участок" остается;
3 если удаляется строка "Механизм", то удаляются вместе с ней и все следующие строки, а строки "Участок" и "Агрегат" остаются;
4 и так далее.
Файл срочно требуется для работы, а навыков программирования нет напрочь. Помогите моему горю, пожалуйста.
С уважением, Андрей

Sub udalit_ctroku()
' del
Dim z
Dim y
Dim Сообщение As Variant
z = ActiveCell.Address
y = Range(z).Value
If y = "Участок" Or y = "Агрегат" Or y = "Механизм" Or y = "Узел" Or y = "Деталь" Or y = "Субдеталь1" Or y = "Субдеталь2" Or y = "Субдеталь3" Then
Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
Сообщение = InputBox("Для подтверждения удаления введите слово 'ДА' строчными или прописными буквами и нажмите кнопку 'ОК'", "УДАЛЕНИЕ СТРОКИ", "ВЫ УВЕРЕНЫ?")
If Сообщение <> "ДА" And Сообщение <> "Да" And Сообщение <> "да" Then
MsgBox "СТРОКА НЕ УДАЛЕНА!", vbCritical, "ОШИБКА УДАЛЕНИЯ"
Exit Sub

End If

Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Sheets("не_трогать").Visible = -1
Sheets("не_трогать").Select
Range("b16:s16").Select
Selection.Copy
Sheets("не_трогать").Visible = 2
GoTo M1
End If
If y <> "Участок" Or y <> "Агрегат" Or y <> "Механизм" Or y <> "Узел" Or y <> "Деталь" Or y <> "Субдеталь1" Or y <> "Субдеталь2" Or y <> "Субдеталь3" Then
MsgBox "Для удаления строки ВЫДЕЛИТЕ ЯЧЕЙКУ 'Участок', 'Арегат', 'Механизм', 'Узел', 'Деталь', 'Субдеталь1', 'Субдеталь2' и т.д.", vbExclamation, "ОШИБКА УДАЛЕНИЯ СТРОКИ"
Exit Sub
End If
M1:
Sheets ("иерархия") .Select
ActiveCell.Offset(-1, 1).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste

End Sub
 
Ответить
СообщениеИмеется рабочая таблица в которой это макрос удаляет строки по одной. В таблице в столбце А перечислены:
Участок, Агрегат, Механизм, Узел, Деталь, Субдеталь1, Субдеталь2, Субдеталь3.
Требуется чтобы нижеприведенный макрос позволял удалять строки из следующих требований:
1 если удаляется строка "Участок", то удаляются вместе с ней и все следующие строки;
2 если удаляется строка "Агрегат", то удаляются вместе с ней и все следующие строки, а строка "Участок" остается;
3 если удаляется строка "Механизм", то удаляются вместе с ней и все следующие строки, а строки "Участок" и "Агрегат" остаются;
4 и так далее.
Файл срочно требуется для работы, а навыков программирования нет напрочь. Помогите моему горю, пожалуйста.
С уважением, Андрей

Sub udalit_ctroku()
' del
Dim z
Dim y
Dim Сообщение As Variant
z = ActiveCell.Address
y = Range(z).Value
If y = "Участок" Or y = "Агрегат" Or y = "Механизм" Or y = "Узел" Or y = "Деталь" Or y = "Субдеталь1" Or y = "Субдеталь2" Or y = "Субдеталь3" Then
Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
Сообщение = InputBox("Для подтверждения удаления введите слово 'ДА' строчными или прописными буквами и нажмите кнопку 'ОК'", "УДАЛЕНИЕ СТРОКИ", "ВЫ УВЕРЕНЫ?")
If Сообщение <> "ДА" And Сообщение <> "Да" And Сообщение <> "да" Then
MsgBox "СТРОКА НЕ УДАЛЕНА!", vbCritical, "ОШИБКА УДАЛЕНИЯ"
Exit Sub

End If

Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Sheets("не_трогать").Visible = -1
Sheets("не_трогать").Select
Range("b16:s16").Select
Selection.Copy
Sheets("не_трогать").Visible = 2
GoTo M1
End If
If y <> "Участок" Or y <> "Агрегат" Or y <> "Механизм" Or y <> "Узел" Or y <> "Деталь" Or y <> "Субдеталь1" Or y <> "Субдеталь2" Or y <> "Субдеталь3" Then
MsgBox "Для удаления строки ВЫДЕЛИТЕ ЯЧЕЙКУ 'Участок', 'Арегат', 'Механизм', 'Узел', 'Деталь', 'Субдеталь1', 'Субдеталь2' и т.д.", vbExclamation, "ОШИБКА УДАЛЕНИЯ СТРОКИ"
Exit Sub
End If
M1:
Sheets ("иерархия") .Select
ActiveCell.Offset(-1, 1).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste

End Sub

Автор - Андрей М
Дата добавления - 27.01.2014 в 22:27
Андрей М Дата: Понедельник, 27.01.2014, 23:51 | Сообщение № 2
Группа: Гости
По указанной Вами ссылке мой вопрос. Решение этого вопроса важно для меня, поэтому я задал его на двух тематических форумах.
[moder]Одну тему закрыл. Он вторую такую же открывает. На Планете ему сказали про правила - побарабану. Еще одна подобная тема, созданная вопреки Правилам форума - и прилетит меленький такой банчик.
 
Ответить
СообщениеПо указанной Вами ссылке мой вопрос. Решение этого вопроса важно для меня, поэтому я задал его на двух тематических форумах.
[moder]Одну тему закрыл. Он вторую такую же открывает. На Планете ему сказали про правила - побарабану. Еще одна подобная тема, созданная вопреки Правилам форума - и прилетит меленький такой банчик.

Автор - Андрей М
Дата добавления - 27.01.2014 в 23:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменить действие макроса (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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