2017-06-28 1 views
0

コントロール(この場合はリストボックス)を無効にする必要があるため、ユーザーは他の部門のデータを取得できません。私はそれを有効/無効にするマクロを持っていて、パスワードを尋ねます。他のワークブックでVBAコードをオブジェクトで操作できないようにする

私が必要とするのは、他のブックのこのリストボックスを有効にしてこのようにロックを解除するためのマクロを、半期的なユーザーが作成しないようにすることです。何らかの形で、他のモジュールのVBAコードがこのコントロールで動作するのを防ぐことは可能ですか?したがって、その1枚のシートに書かれたコードだけを有効または無効にすることができます。

+0

リストボックスはどこですか? –

+0

ワークシートがパスワードでロックされ、 'UserInterFaceOnly'が' true'に設定されていない場合、VBAコードはワークシート上で実行されません。 –

+0

はいリストボックスはシートに表示されます – Matus

答えて

0

何ができることは、この方法を、あなたのVBAプロジェクトをロックし、「機能」にあなたの「潜水艦」に変更され、より高度なユーザーありがとう、あなたがロックを解除せずに書いたマクロにはアクセスできませんプロジェクト。

(機能は潜水がある開発者のリボンで、「マクロを割り当てる」ボタンからは見えません)

0

私はUserInterFaceOnlyを試してみました - 行うことになっているものと私は現時点ではわからないんだけど、それ私が望んだことをしていない

もっと明確にするために、私は2つのリストボックスといくつかのコンボボックスをSheet1に持っています。私は、ユーザーにファイルを送信していたとき、私は、リストボックスをロックしたい、というか.enabled = False

私は何をしようとしていることは、いくつかの他のワークブック

Workbooks("opexRequest").Sheets("Report").ListBoxes("lstDepartment").Enabled = True 

このラインwoudlに書き込むように他のユーザーを防ぐためですリストボックスを有効にして、ユーザーが値を変更することができ、マクロがDepartmentsの新しいSQL文字列を生成します。ユーザーはアクセス権を持っていません。私はコンボボックスを有効にする必要があるので、ユーザーは異なる日付と彼の部門の計画のバージョンを見ることができます。

偶然、私は推測する方法を見つけました。 Sheet1の内

私は誰かがちょうどリストボックスのロックを解除しようとすると、値を変更しようとすると、それは、チェックボックスの値をチェックします。このコード

Sub lstDepartment_change() 

     'checks first if lock checkbox is true/false, clears selection and disables listbox, _ 
     if checkbox is locked and yet listbox is enabled and allows change 

     If Me.chkLock = True Then 
       Me.ListBoxes("lstDepartment").Enabled = False 
       Me.ListBoxes("lstdirector").Enabled = False 
       Call clearlistbox 
       End 
      ElseIf Me.chkLock = False Then 
       Call ControlsM.directorpopulation 
     End If 

    End Sub 



    Sub lstDirector_change() 

     'checks first if lock checkbox is true/false, clears selection and disables listbox, _ 
     if checkbox is locked and yet listbox is enabled and allows change 

     If Me.chkLock = True Then 
      Me.ListBoxes("lstDepartment").Enabled = False 
      Me.ListBoxes("lstdirector").Enabled = False 
      Call clearlistbox 
      End 
     ElseIf Me.chkLock = False Then 

     End If 


    End Sub 



    Private Sub chkLock_Click() 

     'locking/unlocking with password inbox call 

     If Me.chkLock.Value = True Then 
       Me.ListBoxes("lstDepartment").Enabled = False 
       Me.ListBoxes("lstDirector").Enabled = False 
      ElseIf Me.chkLock.Value = False Then 

       If PasswordInputBoxM.InputBoxPassword("Enter password", "Password Required") = "****" Then 
         Me.ListBoxes("lstDepartment").Enabled = True 
         Me.ListBoxes("lstDirector").Enabled = True 
        Else 
         Me.chkLock.Value = True 
         MsgBox "Wrong Password" 
         Exit Sub 
       End If 
     End If 

    End Sub 

があり、選択リストをクリアし、誰かの場合はリストボックス をロックリストボックスのロックを解除し、ロックのチェックボックスをオフにしようとすると、自動的にパスワードを要求します 問題は、誰かが他のブックから選択した値を変更できるということです。私はそれをどう扱うべきかわかりません

Workbooks("opexRequest").Sheets("Report").ListBoxes("lstDepartment").Enabled = True 'handled 
    Workbooks("opexRequest").Sheets("Report").chkLock.value = False 'handled 
    Workbooks("opexRequest").Sheets("Report").ListBoxes("lstDepartment").Selected(1) = True 'do not know how to prevent this 
+0

これは、元の質問の回答ではなく、編集する必要があります。 –

関連する問題