我有一个共享的受保护工作簿,其中包含一个用于显示搜索表单的按钮。这个表单上有两个字段,txtYear和cbxRegion,我需要启用它们。每当我尝试打开字段时,它都会一直有效,直到退出Excel。
我尝试取消保护工作簿,取消共享,并在VBA中注释掉任何引用以重新保护表单。而且,即使编辑过的VBA也会恢复原状。
这是涉及我需要启用的表单的代码部分。任何帮助将不胜感激。我正在使用Excel 2010。
Private Sub UserForm_Initialize()
Dim strDb As String
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim row As Integer
Dim AccessVersionID As String
cbxRegion.Value = Worksheets("Parameters").Cells(5, 14)
Me.txtYear = Worksheets("Parameters").Cells(4, 7)
Me.chkBoth = Worksheets("Parameters").Cells(9, 2)
Me.chkConsultant = Worksheets("Parameters").Cells(7, 2)
Me.chkInHouse = Worksheets("Parameters").Cells(8, 2)
'Set region values
'Open connection
'Select Case SysCmd(acSysCmdAccessVer)
'Case 11: AccessVersionID = "2003"
'End Select
'If AccessVersionID = "2003" Then
' strDb = Worksheets("Parameters").Cells(17, 2).Value 'This will reference the path
'Else
strDb = Worksheets("Parameters").Cells(18, 2).Value
'End If
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strDb & ";"
Set rs = New ADODB.Recordset
'Get recordset
With rs
Set .ActiveConnection = cn
.Open "Select * From LookupRegion"
.Requery
End With
'Add regions
row = 0
With rs
.MoveFirst
Do Until .EOF
cbxRegion.AddItem ![region]
cbxRegion.list(row, 1) = ![RegionName]
row = row + 1
.MoveNext
Loop
End With
'Close the recordset
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
答案 0 :(得分:1)
我设法让它发挥作用。按顺序,我:
现在它完全符合我的需要。
答案 1 :(得分:0)
就我而言,任何人都可以为您提供共享工作簿的最佳建议是:不要使用它们。
共享工作簿无法排除故障。他们的异常行为无法修复。他们没有遵循任何逻辑。一旦共享工作簿开始表现并且行为奇怪,您就已经达到了不可避免的最终阶段。没有什么可以修复它。该行为不一定可重复。
如果您需要同时对数据集进行多用户写入访问,则Excel是错误的工具。使用数据库。
不要使用共享工作簿。