2016-07-11 13 views
0

私は毎月のシートを含む一連のExcelブックを使ってデータを追跡しています。各月の名前は、各ワークブックに固定され、ロックされています。ロックはチェックボックスに基づいてExcelを実行します

私は、シートを自動的にロック/ロック解除するために使用しているMasterKey.xlsmファイルを持っており、その管理者がフルアクセス権を得ることができます。私は、このMasterKeyシートに、通過した後の月のロック機能を追加したいと思います。

管理者が以前に確認できるようにするため、私は...

を月ごとにチェックボックスブロック

O月

O 2月

Oマル

をしたいと思いますシートをロックします。

私はチェックボックスを使用したことがありません。だから誰でも正しいチェックボックスの値を読み取るチェックボックスドリブンマクロを指し示すことができます。そして、選択したユニットごとにロックスクリプトを追加できます。素晴らしいことだ。

+0

は、ユーザーフォームのチェックボックスはありますか?またはブックにありますか? – Sgdva

答えて

0

リストボックスについては、ListStyle = fmListStyleOptionMultiSelect = fmMultiSelectMultiのプロパティ設定で説明しています。

enter image description here

あなたMASTERKEYのワークシートを選択します。次に、SetupListboxLockWorkSheetsを1回実行します。これは、ActiveSheetにリストボックスを追加し、あなたのためにそれを設定します。 MASTERKEYコードモジュールで

 
    Sub SetupListboxLockWorkSheets() 

     Dim ListBox As MSForms.ListBox 
     Dim ws As Worksheet 

     Set ListBox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, _ 
      DisplayAsIcon:=False, Left:=48.75, Top:=29.25, Width:=150, Height:=200).Object 

     ListBox.Name = "lboLockSheets" 

     ListBox.ListStyle = fmListStyleOption 
     ListBox.MultiSelect = fmMultiSelectMulti 

     For Each ws In ThisWorkbook.Worksheets 

      If Not ws.Name = ActiveSheet.Name Then ListBox.AddItem ws.Name 

     Next 

    End Sub 

このコードを追加

Private Sub lboLockSheets_Change() 
    Const PASSWORD As String = "password" 
    Dim i As Integer 
    Dim ws As Worksheet 
    With lboLockSheets.Object 

     Dim text As String 

     For i = 0 To .ListCount - 1 
      Set ws = Worksheets(.List(i)) 
      If .Selected(i) Then 

       ws.Protect PASSWORD 

      Else 

       ws.Unprotect PASSWORD 
      End If 
     Next i 

    End With 
End Sub 
+0

どうすればいいのでしょうか?私は彼らが好きなだけ多くのボックスをチェックさせて、次にテストのループであるマクロを実行させたいのですが、1月から12月まで、cbJan = trueの場合はcbJanをループ... –

関連する問題