2016-05-27 6 views
1

部品番号からの位置を返す部品検索ファイルがあります。私はまた、このファイルは、特定の場所がコンピュータ化されたストレージシステムを指しているので、アップロードファイルを作成することができます。VBAによるロックとロック解除

問題は列Aが部品番号、部品Bがコンピュータ化された場所にあり、非表示のときに "1"を提供するコントロールです。列Cは、入って来る部品のカウントのために開いています。列Cはコンピュータ化されたシステムの外の部品のために必要ではないので、列Bが空白のときにロックし、値が "1のときロックを解除するVBAコードを作成しようとしています「

私がしようとしているコードは次のとおりです。

ます。Private Sub Worksheet_Change(ByValの対象を範囲)

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 
関連する問題