【发布时间】:2017-05-17 22:45:40
【问题描述】:
我有一个 excel 2013 宏工作簿。
此工作簿在过去 6 个月内运行良好。今年的第一天,我在下面的代码行中遇到了问题。这行代码所做的只是在打开工作簿时将 activex 复选框控件设置为 true。
Sheets(WSCHARTS).chkAllJPM.value = True
我设法通过以前的帖子解决了这个问题。答案是关注the instructions。但是,第一天回到办公室的团队成员遇到了此工作簿的问题。同样,他们每天都在使用这本工作簿,没有任何问题。代码在上面的同一行调试,错误代码号为 32809。
我尝试按照为我解决问题的相同说明进行操作,但没有任何乐趣。我无法在我的计算机上复制这些问题。不确定是什么导致了这个错误?
这是子程序。请注意 WSCHARTS 是 public const string - 它的值是“charts”
Sub SetDefaultSetting()
' set the default view upon opening the spreadsheet
Dim ws As Worksheet
Dim wsTime As Worksheet
Set wsTime = ThisWorkbook.Sheets(WSTSJPM)
Set ws = ThisWorkbook.Sheets(WSCHARTS)
' get last date
Dim lRow As Long
lRow = wsTime.Range("A65536").End(xlUp).Row
ws.DropDowns("DropDownStart").ListFillRange = wsTime.Name & "!" & wsTime.Range("A2:A" & lRow).Address
ws.DropDowns("DropDownEnd").ListFillRange = wsTime.Name & "!" & wsTime.Range("A2:A" & lRow).Address
ws.Range(COLDATES & "1") = 1 ' start date is 12 dec 2013
ws.Range(COLDATES & "2") = lRow - 1 ' latest avaiable date
' control are linked to cells so just need to change their cell values
ws.Range("C1") = 6
ws.Range("D1") = 7
ws.Range("E1") = 8
ws.Range("F1") = 9
ws.Range("G1") = 10
' rest should be blank
ws.Range("H1") = 1
ws.Range("I1") = 1
ws.Range("J1") = 1
ws.Range("K1") = 1
ws.Range("L1") = 1
Sheets(WSCHARTS).chkAllJPM.value = True
ws.OLEObjects("chkBOAML5").Object.Enabled = False
Set wsTime = Nothing
Set ws = Nothing
更新
所以我创建了一个新工作簿,并在 Sheet1 上放置了一个 activex 复选框控件并将其重命名为 chkTest。
我在下面添加了代码。该代码适用于我的电脑,但不适用于我同事的电脑。这现在相当令人沮丧。有任何想法吗?
Private Sub Workbook_Open()
Sheets("Sheet1").chkTest.Value = True
End Sub
另一个更新
不确定这是否与我的问题有关。当我按照前面提到的说明进行操作时,我确实注意到我的 c:\users\username\Appdata\local\Temp\VBE 目录中有一个我的同事没有的额外文件。
我有一个 MsForms.exd 和 RefEdit.exd。我的同事只有 MsForms.exd 文件。这会导致任何问题吗?
希望是我的最后一次更新
因此,将上面更新中的代码直接更改为下面的代码现在在我们的两台计算机上都可以使用。有谁能够解释为什么或有什么区别?
Private Sub Workbook_Open()
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
ws.OLEObjects("chkTest").Object.Value = False
End Sub
【问题讨论】:
-
您提到错误代码 32809 与打开工作簿错误有关。检查您打开工作簿的位置。如果可能的话,发布你的整个代码块。需要更多信息。此外,如果它在一台计算机上运行而不是其他计算机,请检查您的文件/文件夹的可访问性。
-
当工作簿打开时,它会调用一个子例程。单独运行该例程仍会在同一位置导致相同的错误。我们对文件和目录的权限相同
-
执行 debug.print 并使用 F8 功能键运行您的代码。检查是否正确分配了每个变量/对象(即您为新工作簿设置的“wb”值确实包含正确的值)。最后要检查的是工作表是否被锁定。同样,需要更多代码
-
我已经逐步完成了代码,所有值都符合预期,并且工作表未锁定。我已经发布了代码,但我认为代码不是问题
-
Excel 版本是否相同?安全设置是否相同? Excel选项->信任中心->信任中心设置->ActiveX设置->“启用所有控件”/安全模式等?