我需要禁用控件(在这种情况下为列表框),因此用户无法从其他部门获取数据。我有一个宏,可以启用/禁用它,并要求输入密码。
我需要的是防止半月用户编写宏来在另一个工作簿中启用此列表框并以这种方式解锁它。有可能以某种方式阻止来自其他模块的VBA代码使用此控件吗?因此,只有在该工作表中编写的代码才能启用或禁用它。
谢谢
答案 0 :(得分:0)
您可以做的是锁定您的VBA项目并将“潜艇”更改为“功能”,这样,更高级的用户无法在不解锁项目的情况下访问您编写的宏。
(从Subs are的开发者功能区中的“assign a macro”按钮看不到功能
答案 1 :(得分:0)
我试过了.enabled = False
- 我现在还不确定应该做什么,但它没有做我想要的事情
为了更清楚,我在Sheet1上有2个列表框和几个组合框。当我向用户发送文件时,我想锁定ListBox,或者更确切地说是 Workbooks("opexRequest").Sheets("Report").ListBoxes("lstDepartment").Enabled = True
我尝试做的是阻止其他用户在其他工作簿中编写
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
此行woudl启用列表框,用户可以更改值,宏将为Departments用户创建新的SQL字符串,不应该有权访问。我需要启用组合框,以便用户可以查看其部门的不同日期和计划版本。
我偶然发现了一种方法。
在Sheet1中我有这段代码
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
如果有人试图仅解锁列表框,并尝试更改值,则会检查复选框值,并清除所选列表并锁定列表框 如果有人试图解锁列表框并取消选中锁定复选框,它将自动询问密码 问题是,有人可以从其他工作簿中更改选定的值。我不知道如何处理
{{1}}