2016-05-27 3 views
1

У меня есть файл поиска деталей, который возвращает местоположение из номера детали. У меня также есть этот файл, создающий файл загрузки, основанный на местоположении, поскольку определенные местоположения указывают на компьютеризированную систему хранения, и я могу загрузить.Заблокировать и разблокировать VBA

Моя проблема - это столбец А - это номер детали, B - это элемент управления, который обеспечивает «1», когда деталь находится в компьютеризированном местоположении и скрыта. столбец C открыт для подсчета входящей части. Поскольку столбец C не нужен для частей, находящихся за пределами компьютеризованной системы, я пытаюсь создать код VBA, который будет блокироваться, когда столбец B пуст и разблокируется, когда значение равно «1 "

код я пытался это:

Private Sub Worksheet_Change (ByVal Target As Range)

Dim aCell As Range 

Application.EnableEvents = False 

If Not Intersect(Range("B:B"), Target) Is Nothing Then 
    ActiveSheet.Unprotect "MYPASSWORD" 
    For Each aCell In Range("B:B") 
     If Len(Trim(aCell.Value)) = "" Then _ 
     aCell.Offset(, 1).Locked = True Else _ 
     aCell.Offset(, 1).Locked = False 
    Next 
    ActiveSheet.Protect "MYPASSWORD" 
End If 

End Sub

Я хотел бы получить его, где, когда я ударил войти курсор переходит к столбцу счетчика C, если часть находится в компьютеризированной системе и просто переходите к следующей строке, если это не так.

ответ

1

Вместо разблокировки и блокировки рассмотрите аргумент UserInterfaceOnly. Это блокирует пользовательский интерфейс, чтобы пользователь не мог взаимодействовать с листом, но разрешает запуск любого макрокода без разблокировки рабочего листа.

Самый простой способ сделать это, запустив цикл в Workbook_Open() случае, чтобы зафиксировать каждый лист:

Private Sub Workbook_Open() 
    For Each ws In ThisWorkbook.Sheets 
     ws.Protect Password:="your password here", UserInterfaceOnly:=True 
    Next 
End Sub 
Смежные вопросы