Страницы: 1
RSS
Запись действий пользователя
 
Здравствуйте!  
Заглянул сегодня в тему "История изменений ячейки". Очень заинтересовала задача. Сходил по указанным ссылкам. Попытался защитить данные на листе "LOG" от удаления и записи в него значений руками. Родился такой файл, с учетом кодов взятых с сайтов, на которые были даны ссылки. Но остались три вопроса:  
1. Лист "LOG" защищается при его активации. Если выйти из файла, а потом в него зайти, то "LOG" будет защищен и Excel может начать ругаться. Вопрос: можно ли с него снять защиту при открытии файла автоматом?  
2.Запись в листе "LOG" "сползает" всё ниже и ниже, даже если вся предыдущая информация из него удаляется. Понимаю, что дело в строке  
 
lLastRow = .Cells.SpecialCells(xlLastCell).Row + 1  
 
но как это победить, пока не знаю. Хотелось бы, чтобы в нужный мне момент запись началась с первой строки, т.е. как принудительно обнулить счетчик строк?  
 
3. Как защитить лист "LOG" от удаления из файла?  
 
Пароль на блокировку (разблокировку) листа "LOG" 333.  
 
Помогите, пжл.  
Спасибо!
 
1. попробуйте так:  
 
Private Sub Workbook_Open()  
Sheets("LOG").Protect Password:="333", UserInterfaceOnly:=True  
End Sub
Excel 2007
 
2 ABC  
Да, я понял Вас, спасибо!  
Я Ваш клиент!!! :о)))))))  
Я, наверное, неочень понятно объяснил. Лист "LOG", блокируется приего активации, чтобы нечаянно с него ничего не удалить, а при открытии файла мне нужно снять защиту с него для возможности изменения данных на других листах и, как следствие, записи в "LOG". М.б. мне нужно прописать    
 
Sheets("LOG").Unprotect      
 
Если я его защищу при открытии, а не при активации, то программа мне не даст возможности вносить данные на другие листы.  
Спасибо!
 
2 The_Prist  
Спасибо за ссылку и помощь! Поторопился и не дочитал. :о((
 
iba2004, при открытии книги UserInterfaceOnly:=True дает возможность изменить данные на листе ("LOG") макросом (не вручную), так что можете удалить -Sheets("LOG").Unprotect. И поставьте VBA пароль. О Счастье.  
 
'в ЭтуКнигу  
Private Sub Workbook_Open()  
   Sheets("LOG").Protect Password:="333", UserInterfaceOnly:=True  
End Sub
Excel 2007
 
2 АВС  
Понял! Спасибо Вам за разъяснения.  
Я уж тут калякать кустарно начал  
 
Private Sub Workbook_Open()  
Dim a As String  
   If ActiveSheet.Name = "LOG" Then  
   Else  
   Sheets("LOG").Unprotect Password:="333"  
   End If  
End Sub  
 
Это для того, чтобы если файл будет сохранён на листе "LOG", то при входе в него и попадании на лист "LOG", защита с листа не снималась.  
Но Ваши объяснения всё упрощают.  
Спасибо!  
 
Осталось понять как защитить лист от удаления. М.б. есть советы или ссылки?  
 
2 ABC  
2 The_Prist  
 
Парни, с вами очень легко.  
Ещё раз благодарю вас!
 
Вот, смотрите пароль VBA 333  
Свойство листа "LOG" Visible = 2 (скрыл лист)  
дабл клик на лист вызывает форму для скрытия/Показать лист "LOG", пароль также 333
Excel 2007
 
2 ABC  
Да, я понял.  
В VBA Вы выбрали тип 2 - xlSheetVeryHidden  
А куда мне нужно дважды кликать, если лист не видно, он же скрыт? Только в форме VBA? Простите, я не знаю этого и сейчас могу только строить передположения.  
Спасибо!
 
в любую кроме "LOG"  
Sub www()  
   If ActiveSheet.Name = "LOG" Then Exit Sub'Если активный лист = "LOG", тогда выходить из программы(макрос)  
...  
End Sub
Excel 2007
 
2 ABC  
Спасибо!
Страницы: 1
Читают тему
Наверх