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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение формы записи в заблокированном листе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение формы записи в заблокированном листе (Макросы/Sub)
Заполнение формы записи в заблокированном листе
DKeT Дата: Среда, 24.04.2019, 15:51 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 3 ±
Замечаний: 20% ±

Excel 2007
Здравствуйте, подскажите пожалуйста, как заполнять таблицу через созданную форму если лист заблокирован? http://www.excelworld.ru/forum/10-41619-1
Спасибо K-SerJC, все работает, но единственное что нельзя заполнять пустые строки через созданную форму, как можно изменить данный код?
Размер файла превышает, не знаю как сюда выложить, этот файл есть тут http://www.cyberforum.ru/vba/thread2442552.html#post13520335
 
Ответить
СообщениеЗдравствуйте, подскажите пожалуйста, как заполнять таблицу через созданную форму если лист заблокирован? http://www.excelworld.ru/forum/10-41619-1
Спасибо K-SerJC, все работает, но единственное что нельзя заполнять пустые строки через созданную форму, как можно изменить данный код?
Размер файла превышает, не знаю как сюда выложить, этот файл есть тут http://www.cyberforum.ru/vba/thread2442552.html#post13520335

Автор - DKeT
Дата добавления - 24.04.2019 в 15:51
K-SerJC Дата: Четверг, 25.04.2019, 11:02 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
заполнять таблицу через созданную форму если лист заблокирован

перед заполнением данных на лист
сначала отключаете выполнение событий и снимаете защиту
[vba]
Код
Application.EnableEvents=False
Me.Unprotect
[/vba]
затем ставите обратно
[vba]
Код
Me.Protect
Application.EnableEvents=true
[/vba]


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
заполнять таблицу через созданную форму если лист заблокирован

перед заполнением данных на лист
сначала отключаете выполнение событий и снимаете защиту
[vba]
Код
Application.EnableEvents=False
Me.Unprotect
[/vba]
затем ставите обратно
[vba]
Код
Me.Protect
Application.EnableEvents=true
[/vba]

Автор - K-SerJC
Дата добавления - 25.04.2019 в 11:02
boa Дата: Четверг, 25.04.2019, 12:08 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
DKeT,

[vba]
Код
Me.Protect UserInterfaceOnly:=True
[/vba]
Но данный параметр действует только в пределах одного сеанса, т.е. после повторного открытия книги нужно хотябы раз выполнить данную команду. Лучше прописать на событие Workbook_Open


 
Ответить
СообщениеDKeT,

[vba]
Код
Me.Protect UserInterfaceOnly:=True
[/vba]
Но данный параметр действует только в пределах одного сеанса, т.е. после повторного открытия книги нужно хотябы раз выполнить данную команду. Лучше прописать на событие Workbook_Open

Автор - boa
Дата добавления - 25.04.2019 в 12:08
DKeT Дата: Четверг, 25.04.2019, 13:31 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 3 ±
Замечаний: 20% ±

Excel 2007
boa, можете показать на примере?
 
Ответить
Сообщениеboa, можете показать на примере?

Автор - DKeT
Дата добавления - 25.04.2019 в 13:31
boa Дата: Пятница, 26.04.2019, 09:13 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
DKeT,
Конкретно на вашем файле
в модуль книги [vba]
Код
Private Sub Workbook_Open()
    Sheets(1).Protect UserInterfaceOnly:=True
End Sub
[/vba]

в модуль листа[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Me.ProtectContents = False Then Exit Sub
    If Target.Value <> "" Then Target.Locked = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Locked And Me.ProtectContents Then
If MsgBox("В ячейке есть значение, желаете изменить?", vbYesNo) = vbYes Then
Application.EnableEvents = False
    Target.Value = InputBox("Введите новое значение", , Target.Value)
Application.EnableEvents = True
End If: End If: End Sub
[/vba]


 
Ответить
СообщениеDKeT,
Конкретно на вашем файле
в модуль книги [vba]
Код
Private Sub Workbook_Open()
    Sheets(1).Protect UserInterfaceOnly:=True
End Sub
[/vba]

в модуль листа[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Me.ProtectContents = False Then Exit Sub
    If Target.Value <> "" Then Target.Locked = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Locked And Me.ProtectContents Then
If MsgBox("В ячейке есть значение, желаете изменить?", vbYesNo) = vbYes Then
Application.EnableEvents = False
    Target.Value = InputBox("Введите новое значение", , Target.Value)
Application.EnableEvents = True
End If: End If: End Sub
[/vba]

Автор - boa
Дата добавления - 26.04.2019 в 09:13
DKeT Дата: Пятница, 26.04.2019, 11:26 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 3 ±
Замечаний: 20% ±

Excel 2007
boa, выдает ошибку на [vba]
Код
Target.Value = InputBox("Введите новое значение", , Target.Value)
[/vba] и так же пишет что лист защищен, а может можно как то сделать, чтоб он был незащищенным, а такая запись выходила только на те строки которые заполнены?
 
Ответить
Сообщениеboa, выдает ошибку на [vba]
Код
Target.Value = InputBox("Введите новое значение", , Target.Value)
[/vba] и так же пишет что лист защищен, а может можно как то сделать, чтоб он был незащищенным, а такая запись выходила только на те строки которые заполнены?

Автор - DKeT
Дата добавления - 26.04.2019 в 11:26
boa Дата: Пятница, 26.04.2019, 12:58 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
и так же пишет что лист защищен

после того как вставите макросы в модули, в первую очередь выполните Workbook_Open, а уж только потом клацайте по защищенному листу.
а снимать и ставить защиту после каждого действия просто не рационально


 
Ответить
Сообщение
и так же пишет что лист защищен

после того как вставите макросы в модули, в первую очередь выполните Workbook_Open, а уж только потом клацайте по защищенному листу.
а снимать и ставить защиту после каждого действия просто не рационально

Автор - boa
Дата добавления - 26.04.2019 в 12:58
DKeT Дата: Пятница, 26.04.2019, 13:09 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 3 ±
Замечаний: 20% ±

Excel 2007
boa, можете показать на примере?
 
Ответить
Сообщениеboa, можете показать на примере?

Автор - DKeT
Дата добавления - 26.04.2019 в 13:09
boa Дата: Пятница, 26.04.2019, 15:00 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
можете показать на примере?

ваш же файл, только без формы
К сообщению приложен файл: 5811444-1-.xlsm (28.8 Kb)


 
Ответить
Сообщение
можете показать на примере?

ваш же файл, только без формы

Автор - boa
Дата добавления - 26.04.2019 в 15:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение формы записи в заблокированном листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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