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

Вход

Регистрация

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

 

= Мир MS Excel/Не даёт выделить ячейку, не заблокированную паролем - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не даёт выделить ячейку, не заблокированную паролем (Макросы/Sub)
Не даёт выделить ячейку, не заблокированную паролем
KIMVSR Дата: Четверг, 04.08.2016, 09:39 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 118
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте,

Прошу вашей помощи в решении следующей проблемы:

Есть база данных, в ней два листа с информацией: Sheet1 и Sheet2

При закрытии файла срабатывает макрос и ставит пароль на все закрытые ячейки (locked cells).
При открытии файла Sheet1 позволяет выделять курсором открытые ячейки (unlocked cells), а Sheet2 - не даёт!
Прикладываю скрины для лучшего понимания проблемы:





Красным прямоугольником я выделил те ячейки, которые я оставил открытыми для редактирования (unlocked cells).

Как видно на скринах, первый лист без проблем даёт выделить ячейку (появляется зелёный прямоугольник).
На втором листе зелёный прямоугольник просто не появляется при клике на открытые для редактирования ячейки (unlocked cells).
Причём при двойной клике возможность редактирования всё-таки появляется, но ячейка всё также не выделяется зелёным прямоугольником.

Пытался добавить в макрос SelectUnlockedCells:=True вот таким вот образом:

[vba]
Код
Private Sub Workbook_Open()
For Each sh In ThisWorkbook.Sheets(Array("Sheet1", "Sheet2"))
    With sh
        .Unprotect "motikas"
        .Protect Password:="motikas", UserInterfaceOnly:=True, Scenarios:=True, AllowFiltering:=True, SelectUnlockedCells:=True
        .EnableOutlining = True
    End With
Next
End Sub
[/vba]
После чего файл выкидывает ошибку при открытии, а листы и вовсе остаются "незапороленными".



Странно то, что для обеих листов применён абсолютно идентичный код VBA, да и галочки в свойствах ячеек (format cells) я тоже указывал одинаково, только вот первый лист даёт выделять unlocked cells нормально, а второй лист - даёт только при двойном клике, причём НЕ выделяет саму ячейку зелёным.

Проблема, вроде бы, не серьёзная, но т.к. базу данных редактируют десятки человек, многие из них не догадываются делать двойной клик по ячейкам и постоянно жалуются, что файл не доступен для редактирования. Если честно, то меня и самого эти двойные клики немного напрягают, т.к. невозможно перемещаться по ячейкам при помощи клавиатуры - постоянно приходится делать двойной клик для выделения той или иной ячейки.

Файл прилагаю, пароль на открытие листов: "motikas".

Содержание файла на эстонском языке, но это, в принципе, особо мешать не должно.

Я был бы очень признателен за помощь в решении данной проблемы! :)
К сообщению приложен файл: KIMVSR.xlsm (70.0 Kb)


Сообщение отредактировал KIMVSR - Четверг, 04.08.2016, 09:45
 
Ответить
СообщениеЗдравствуйте,

Прошу вашей помощи в решении следующей проблемы:

Есть база данных, в ней два листа с информацией: Sheet1 и Sheet2

При закрытии файла срабатывает макрос и ставит пароль на все закрытые ячейки (locked cells).
При открытии файла Sheet1 позволяет выделять курсором открытые ячейки (unlocked cells), а Sheet2 - не даёт!
Прикладываю скрины для лучшего понимания проблемы:





Красным прямоугольником я выделил те ячейки, которые я оставил открытыми для редактирования (unlocked cells).

Как видно на скринах, первый лист без проблем даёт выделить ячейку (появляется зелёный прямоугольник).
На втором листе зелёный прямоугольник просто не появляется при клике на открытые для редактирования ячейки (unlocked cells).
Причём при двойной клике возможность редактирования всё-таки появляется, но ячейка всё также не выделяется зелёным прямоугольником.

Пытался добавить в макрос SelectUnlockedCells:=True вот таким вот образом:

[vba]
Код
Private Sub Workbook_Open()
For Each sh In ThisWorkbook.Sheets(Array("Sheet1", "Sheet2"))
    With sh
        .Unprotect "motikas"
        .Protect Password:="motikas", UserInterfaceOnly:=True, Scenarios:=True, AllowFiltering:=True, SelectUnlockedCells:=True
        .EnableOutlining = True
    End With
Next
End Sub
[/vba]
После чего файл выкидывает ошибку при открытии, а листы и вовсе остаются "незапороленными".



Странно то, что для обеих листов применён абсолютно идентичный код VBA, да и галочки в свойствах ячеек (format cells) я тоже указывал одинаково, только вот первый лист даёт выделять unlocked cells нормально, а второй лист - даёт только при двойном клике, причём НЕ выделяет саму ячейку зелёным.

Проблема, вроде бы, не серьёзная, но т.к. базу данных редактируют десятки человек, многие из них не догадываются делать двойной клик по ячейкам и постоянно жалуются, что файл не доступен для редактирования. Если честно, то меня и самого эти двойные клики немного напрягают, т.к. невозможно перемещаться по ячейкам при помощи клавиатуры - постоянно приходится делать двойной клик для выделения той или иной ячейки.

Файл прилагаю, пароль на открытие листов: "motikas".

Содержание файла на эстонском языке, но это, в принципе, особо мешать не должно.

Я был бы очень признателен за помощь в решении данной проблемы! :)

Автор - KIMVSR
Дата добавления - 04.08.2016 в 09:39
_Boroda_ Дата: Четверг, 04.08.2016, 10:12 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В первом листе ячейка - Формат - Защита - галка "Защищаемая ячейка" снята, а во втором поставлена


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ первом листе ячейка - Формат - Защита - галка "Защищаемая ячейка" снята, а во втором поставлена

Автор - _Boroda_
Дата добавления - 04.08.2016 в 10:12
KIMVSR Дата: Четверг, 04.08.2016, 10:31 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 118
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, не знаю, вроде как и там и там галочки сняты:





Сообщение отредактировал KIMVSR - Четверг, 04.08.2016, 11:05
 
Ответить
Сообщение_Boroda_, не знаю, вроде как и там и там галочки сняты:




Автор - KIMVSR
Дата добавления - 04.08.2016 в 10:31
SLAVICK Дата: Четверг, 04.08.2016, 10:31 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Защита - галка "Защищаемая ячейка" снята, а во втором поставлена

_Boroda_, не совсем так - просто со скриншота не видно какие столбцы пытались выделить - они при открытии книги скрываются.
Похоже проблема в строке:
[vba]
Код
If .Name = "Oskused" Then .Cells(8, "g").Select Else .Cells(8, "f").Select
[/vba]
замените на:
[vba]
Код
If .Name = "Oskused" Then .Cells(8, "g").Select Else .Cells(5, "f").Select: .Cells(1, "f").Select
[/vba]
и в очередности выполнения:
Вы сначала защищаете лист - потом выделяете заблокированную ячейку %) .
И вообще нужно выделять незаблокированную в конце. Поэтому снял защиту с ячейки f1 и в конце выделяю ее.
вот пробуйте так:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    For Each sh In ThisWorkbook.Sheets(Array("Sheet1", "Sheet2"))
        With sh
            .Activate
            .ShowAllData
            .Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
            .Unprotect "motikas"
            If .Name = "Oskused" Then .Cells(8, "g").Select Else .Cells(5, "f").Select: .Cells(1, "f").Select
            .Protect Password:="motikas", UserInterfaceOnly:=True, Scenarios:=True, AllowFiltering:=True
        End With
    Next
End Sub
[/vba]
К сообщению приложен файл: KIMVSR-1-.xlsm (70.2 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Защита - галка "Защищаемая ячейка" снята, а во втором поставлена

_Boroda_, не совсем так - просто со скриншота не видно какие столбцы пытались выделить - они при открытии книги скрываются.
Похоже проблема в строке:
[vba]
Код
If .Name = "Oskused" Then .Cells(8, "g").Select Else .Cells(8, "f").Select
[/vba]
замените на:
[vba]
Код
If .Name = "Oskused" Then .Cells(8, "g").Select Else .Cells(5, "f").Select: .Cells(1, "f").Select
[/vba]
и в очередности выполнения:
Вы сначала защищаете лист - потом выделяете заблокированную ячейку %) .
И вообще нужно выделять незаблокированную в конце. Поэтому снял защиту с ячейки f1 и в конце выделяю ее.
вот пробуйте так:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    For Each sh In ThisWorkbook.Sheets(Array("Sheet1", "Sheet2"))
        With sh
            .Activate
            .ShowAllData
            .Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
            .Unprotect "motikas"
            If .Name = "Oskused" Then .Cells(8, "g").Select Else .Cells(5, "f").Select: .Cells(1, "f").Select
            .Protect Password:="motikas", UserInterfaceOnly:=True, Scenarios:=True, AllowFiltering:=True
        End With
    Next
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 04.08.2016 в 10:31
KIMVSR Дата: Четверг, 04.08.2016, 11:30 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 118
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, большое вам спасибо, сейчас попробую разобраться!

Update 11:58: разобрался, всё понял, ещё раз спасибо за помощь!


Сообщение отредактировал KIMVSR - Четверг, 04.08.2016, 11:58
 
Ответить
СообщениеSLAVICK, большое вам спасибо, сейчас попробую разобраться!

Update 11:58: разобрался, всё понял, ещё раз спасибо за помощь!

Автор - KIMVSR
Дата добавления - 04.08.2016 в 11:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не даёт выделить ячейку, не заблокированную паролем (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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