Добрый день форумчане!!! Прошу вас помочь прописать макрос к приложенному файлу, если конечно же это возможно. Создал документ "Расчет и построение градуировочной зависимости" в создании приложил все усилия минимализировать человеческое вмешательство в расчетах. Но столкнулся с проблемой ((((. При внесении данных склерометра и разрушающей нагрузки кубов, не которые значения отбраковываются. И приходится потом самому удалять значения в некоторых столбцах. (Это хорошо я понимаю что где и как удалить) а если лаборант или новый инженер не будет знать этого.... Вот я и решил обратиться к вам за помощью!!! Когда в столбце X8:57 появляется "ОТБРАКОВЫВАЕТСЯ": ВАЖНО!!! В столбце V8:W57 на против "ОТБРАКОВЫВАЕТСЯ" остались не именные (при удалении значений описанных ниже). а) В столбце T8:U57 значения на против "ОТБРАКОВЫВАЮТСЯ" удалились. А также аналогично из других столбцов и ячеек: (AB8:AC57; A8:57; AL8:AM57; AS8:57; AV8:AX57).
Добрый день форумчане!!! Прошу вас помочь прописать макрос к приложенному файлу, если конечно же это возможно. Создал документ "Расчет и построение градуировочной зависимости" в создании приложил все усилия минимализировать человеческое вмешательство в расчетах. Но столкнулся с проблемой ((((. При внесении данных склерометра и разрушающей нагрузки кубов, не которые значения отбраковываются. И приходится потом самому удалять значения в некоторых столбцах. (Это хорошо я понимаю что где и как удалить) а если лаборант или новый инженер не будет знать этого.... Вот я и решил обратиться к вам за помощью!!! Когда в столбце X8:57 появляется "ОТБРАКОВЫВАЕТСЯ": ВАЖНО!!! В столбце V8:W57 на против "ОТБРАКОВЫВАЕТСЯ" остались не именные (при удалении значений описанных ниже). а) В столбце T8:U57 значения на против "ОТБРАКОВЫВАЮТСЯ" удалились. А также аналогично из других столбцов и ячеек: (AB8:AC57; A8:57; AL8:AM57; AS8:57; AV8:AX57).lebensvoll
Мало, что куча ошибок, еще и вопросы в кучу свалили. Тут так не принято. А ничего, что очистка убъет формулы в ячейках? Так же неясно как возникает значение "Отбраковывается". Основываясь на своих предположениях, как понял, в модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Cells(Target.Row, 24) = "Отбраковывается" Then _ Intersect(Rows(Target.Row), Range("T:U,AB:AC,AI:ai,AL:AM,AS:as,AV:AX")).ClearContents Application.EnableEvents = True End Sub
[/vba]
Мало, что куча ошибок, еще и вопросы в кучу свалили. Тут так не принято. А ничего, что очистка убъет формулы в ячейках? Так же неясно как возникает значение "Отбраковывается". Основываясь на своих предположениях, как понял, в модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Cells(Target.Row, 24) = "Отбраковывается" Then _ Intersect(Rows(Target.Row), Range("T:U,AB:AC,AI:ai,AL:AM,AS:as,AV:AX")).ClearContents Application.EnableEvents = True End Sub
я постарался описать первый вопрос подробно а за второй поинтересовался возможно ли это реализовать...
Цитата
А ничего, что очистка убъет формулы в ячейках?
а их если что можно же будет протянуть с верху потом??? [moder]Никто не будет здесь отвечать по второму вопросу. Так что уберите его из топика[/moder]
KuklP, спасибо попробую сейчас!!!
Цитата
Тут так не принято.
я постарался описать первый вопрос подробно а за второй поинтересовался возможно ли это реализовать...
Цитата
А ничего, что очистка убъет формулы в ячейках?
а их если что можно же будет протянуть с верху потом??? [moder]Никто не будет здесь отвечать по второму вопросу. Так что уберите его из топика[/moder]lebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал Pelena - Понедельник, 28.03.2016, 15:23
Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Application.EnableEvents = False For Each c In [x8:x57].Cells If c = "Отбраковывается" Then _ Intersect(Rows(c.Row), Range("T:U,AB:AC,AI:ai,AL:AM,AS:as,AV:AX")).ClearContents Next Application.EnableEvents = True End Sub
[/vba] Только это не есть хорошо, на каждую правку на листе оно будет работать.
Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Application.EnableEvents = False For Each c In [x8:x57].Cells If c = "Отбраковывается" Then _ Intersect(Rows(c.Row), Range("T:U,AB:AC,AI:ai,AL:AM,AS:as,AV:AX")).ClearContents Next Application.EnableEvents = True End Sub
[/vba] Только это не есть хорошо, на каждую правку на листе оно будет работать.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Только это не есть хорошо, на каждую правку на листе оно будет работать.
т.е на любые изменения но согласно условию "ОТБРАКОВЫВАЕТСЯ" будет удалять не нужные мне значения, правильно!? И почему это не есть ХОРОШО ваше мнение
KuklP,
Цитата
Только это не есть хорошо, на каждую правку на листе оно будет работать.
т.е на любые изменения но согласно условию "ОТБРАКОВЫВАЕТСЯ" будет удалять не нужные мне значения, правильно!? И почему это не есть ХОРОШО ваше мнениеlebensvoll
Любое изменение в любом месте листа будет вызывать проверку диапазона x8:x57. Безотносительно к слову Отбраковывается. Т.е. будет происходить бесполезная работа. А что хорошего в бесполезной работе?
Любое изменение в любом месте листа будет вызывать проверку диапазона x8:x57. Безотносительно к слову Отбраковывается. Т.е. будет происходить бесполезная работа. А что хорошего в бесполезной работе?KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Правильно ли я понимаю, что изменения вносятся оператором только в диапазоне c8:l57? Все остальное считается формулами? Тогда лучше так: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range If Intersect(Target, Me.[c8:l57]) Is Nothing Then Exit Sub Application.EnableEvents = False For Each c In Me.[x8:x57].Cells If c.Value = "Отбраковывается" Then _ Intersect(Me.Rows(c.Row), Me.Range("T:U,AB:AC,AI:ai,AL:AM,AS:as,AV:AX")).ClearContents Next Application.EnableEvents = True End Sub
[/vba]
Правильно ли я понимаю, что изменения вносятся оператором только в диапазоне c8:l57? Все остальное считается формулами? Тогда лучше так: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range If Intersect(Target, Me.[c8:l57]) Is Nothing Then Exit Sub Application.EnableEvents = False For Each c In Me.[x8:x57].Cells If c.Value = "Отбраковывается" Then _ Intersect(Me.Rows(c.Row), Me.Range("T:U,AB:AC,AI:ai,AL:AM,AS:as,AV:AX")).ClearContents Next Application.EnableEvents = True End Sub