我有一个 Excel 2013 宏工作簿。
本工作簿在过去 6 个月中一直运行良好。今年的第一天,我遇到了下面的问题,代码如下。这行代码所做的就是在打开工作簿时将 activex 复选框控件设置为 true。
Sheets(WSCHARTS).chkAllJPM.value = True
我设法通过之前的帖子解决了这个问题。答案是以下说明。然而,第一天回到办公室的团队成员在使用此工作簿时遇到了问题。他们再次每天使用这本工作簿,没有出现任何问题。代码在上面的同一行上进行调试,错误代码号为 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
UPDATE
因此,我创建了一个新工作簿,只需在 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