Добрый день. При использовании двух макросов выдает Debugger, а именно:
Код
Sub Protect_for_User_Non_for_VBA()
ActiveSheet.Protect Password:="Jerry", UserInterfaceOnly:=True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("C:D, F:G, I:J, L:M, O:P, R:S, U:V, X:Y, AA:AB, AD:AE, AG:AH, AJ:AK, AM:AN, AP:AQ, AS:AT, AV:AW, AY:AZ, BB:BC, BE:BF, BH:BI, BK:BL, BN:BO, BQ:BR, BT:BU, BW:BX, BZ:CA, CC:CD, CF:CG")) Is Nothing Then
If IsEmpty(Target) Then
Range("B" & cell.Row) = Empty
Else
With Range("B" & cell.Row)
.Value = Date
End With
End If
End If
Next cell
End Sub
Именно поэтому я и обратился. Выделяет строку .Value = Date при заполнении строки из диапазона, т.е. когда макрос установки автодаты должен сработать, защита не позволяет ему это сделать. Макрос, который по идее должен был дать доступ для действий, не срабатывает. Как-то так.
Sub Protect_for_User_Non_for_VBA()
ActiveSheet.Protect Password:="Jerry", UserInterfaceOnly:=True
End Sub
не значит что он сработал хоть 1 раз т.е. если у вас где-то на полке в шкафу лежат презервативы, это само по себе не гарантирует безопасного секса, если ими не пользоваться
ну, и чтобы 2 раза не вставать, переписал
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range, rg As Range
Set rg = Intersect(cell, Range("C:D, F:G, I:J, L:M, O:P, R:S, U:V, X:Y, AA:AB, AD:AE, AG:AH, AJ:AK, AM:AN, AP:AQ, AS:AT, AV:AW, AY:AZ, BB:BC, BE:BF, BH:BI, BK:BL, BN:BO, BQ:BR, BT:BU, BW:BX, BZ:CA, CC:CD, CF:CG"))
If rg Is Nothing Then Exit Sub
For Each cell In rg
If IsEmpty(cell) Then Range("B" & cell.Row) = Empty Else Range("B" & cell.Row) = Date
Next cell
End Sub
У Вас же столбец В защищен от изменений Перед изменением ячейки надо снимать защиту, потом ставить.
Скрытый текст
Код
Sub Protect_for_User_Non_for_VBA()
ActiveSheet.Protect Password:="Jerry", UserInterfaceOnly:=True
End Sub
Sub UnProtect_for_User_Non_for_VBA()
ActiveSheet.Unprotect Password:="Jerry"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("C:D, F:G, I:J, L:M, O:P, R:S, U:V, X:Y, AA:AB, AD:AE, AG:AH, AJ:AK, AM:AN, AP:AQ, AS:AT, AV:AW, AY:AZ, BB:BC, BE:BF, BH:BI, BK:BL, BN:BO, BQ:BR, BT:BU, BW:BX, BZ:CA, CC:CD, CF:CG")) Is Nothing Then
UnProtect_for_User_Non_for_VBA
If IsEmpty(Target) Then
Range("B" & cell.Row) = Empty
Else
With Range("B" & cell.Row)
.Value = Date
End With
End If
Protect_for_User_Non_for_VBA
End If
Next cell
End Sub
Сергей, или при открытии файла разок выполнить защиту в режиме только от пользователя тем более, что макрос многозначительно написан, но просто валялся в модуле
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Ага, это не полистовой вариант, а на всю книгу? Тогда возникает еще один вопрос (извиняюсь на наглость). У меня часть листов иного формата, с другими задачами. Я могу их вынести за рамки действия макроса? Спасибо.
а они уже вынесены макрос в модуле ЭтаКнига защищает ТОЛЬКО 1-й лист макрос в модуле листа работает ТОЛЬКО с листом, в котором написан т.е. не понимаю что вы хотите
Извиняюсь за паузу. Новый код работает нормально при условии, что столбец В - незащищенные ячейки. Как только их защищаешь - выдается ошибка. Далее, он не решает вопрос с автоудалением даты при удалении инфы с одной из ячеек диапазона. Но в любом случае спасибо большое за потраченое время и помощь.
новому коду ПО-БАРАБАНУ какие колонки защищены, а какие нет при правильном применении будет работать с любым листом и удаление (очистка данных в колонке В) там тоже решено
Я извиняюсь за пропадания. Это первое. Второе, я еще посмотрю, что я еще мог нарукоблудить с тем, что вы для меня сделали, и почему он не работает корректно.
Следующее. В отношении всего файла. Файл представляет собой документ из ряда страниц, образец которой я вам выложил. Он предназначен для узкого круга пользователей, заполнен определенной информацией. Выкладывать его не в моей компетенции, и я твердо знаю, что данное предложение не будет воспринято. Это не мания и не шпионские игры, просто информация конфиденциальна и все. Надеюсь на понимание.
лично мне не нужен ни ваш файл, ни информация, которая в нем находится вы можете самостоятельно разбираться с тем, что уже выложено столько времени, сколько посчитаете нужным точно так же, как вольны забить на все это (как минимум на то, что выложил я) и решить свою задачу самостоятельно удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Непонятки начинаются еще с названия темы. Ладно бы, вопрос был в общем, о двух ЛЮБЫХ макосах. Но у Вас, похоже, что-то где-то как-то не работает В ВАШЕЙ КОНКРЕТНОЙ ЗАДАЧЕ. Вот эта задача никак не просматривается в названии темы. Предложите. Модераторы заменят.
Более 20 сообщений, а Вы никак не можете объяснить задачу! Из двух одно (догадайтесь сами) - или помогающие недалекие, или из Вас тот еще объясняльщик...
Игорь, во-первых, спасибо большое, Вы уже помогли, Ваш макрос более лаконичен и работает с защищенными ячейками. Второе, не исключаю, что я формулирую задачи некорректно. Господа, как вы догадались, это не мое поле деятельности. Приношу свои извинения. Загрузить ролик мне не удалось (ограничения по размерам). Опишу мои действия и работу макроса. 1. В ячейку С6 вносятся данные. 2. Макрос вносит дату в закрытую ячейку В6. 3. В ячейку D6 вносятся данные ошибочно. 4. В ячейке D6 данные убираются. 5. Макрос убирает дату в ячейке В6, хотя есть запись в данной строке (ячейка С6). Хотелось бы, чтобы дата оставалась при условии заполнения хотябы одной соответствующей ячейки, т.е. даже если мы очищаем ячейку D6, но остается инфа в любой другой ячейке данной строки 6 (понятно, из диапазона) дата в ячейке В6 остается. Еще раз извиняюсь, но корректнее сформулировать у меня не получается. Спасибо.
Следущее. Касательно сообщения Модератора. Вопрос стоял, почему два макроса не работают одновременно или не работают корректно. Пользователь Ігор Гончаренко дал на него исчерпывающий ответ. Я не могу понять, что Вас возмущает в названии, хотя для меня это (название) абсолютно не принципиально. Далее. Я никого ни в чем не обвиняю и более чем уверен, что если кому-то что-то понадобится, то этот кто-то найдет способ это получить без излишних анонсов. Я объяснил свои действия/недействия. И не более. Если кто-то усмотрел в этом персональный выпад - нет, этого не было.
Sitizen написал: Я не могу понять, что Вас возмущает в названии, хотя для меня это (название) абсолютно не принципиально
В том и дело, что для Вас понятно. А представьте, что на форум заглянет человек, у которого аналогичная проблема - по какому названию ему легче будет найти нужную тему?
Юрий М., возможно. Вам виднее, это Ваше королевство, и желание упорядочитть все абсолютно объяснимо. Как я сказал выше, для меня название абсолютно не принципиально. Тем более, что похожее обсуждение у вас на сайте уже есть.
Sitizen написал: для меня название абсолютно не принципиально
Из этого можно сделать вывод, что Вы ничего не поняли: форум не для Вас одного. И тема эта уже не Ваша, а форума. Никто больше не будет пытаться Вас переубедить, но будьте готовы к тому, что Ваша тема с невнятно сформулированным названием будет удалена без какого-либо предупреждения.