我已经使用这个excel程序好几个月而没有问题。几天前它突然开始抛出这个错误。在名为"输入"的工作表上我将双击列中的单元格" A"这将创建一个下拉框,填充来自"数据"片。我开始输入然后选择要添加到单元格的数据。现在,当我单击单元格并收到错误消息"编译错误 - 未找到方法或数据成员"。这是我的代码块,错误显示在底部突出显示" Me.TempCombo.Activate"。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
If Target.Column = 1 And Target.Row > 12 And Target.Row <> HRRow And Target.Row <> HRRow - 1 Then
lRow = Sheets("Data").Range("A65536").End(xlUp).Row
Set cboTemp = ws.OLEObjects("TempCombo")
On Error Resume Next
With cboTemp
'clear and hide the combo box
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
End With
On Error GoTo errHandler
'If Target.Validation.Type = 3 Then
'if the cell contains a data validation list
Cancel = True
Application.EnableEvents = False
'get the data validation formula
'str = Target.Validation.Formula1
'str = Right(str, Len(str) - 1)
str = "=Data!A2:A" & lRow
With cboTemp
'show the combobox with the list
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Height = Target.Height + 5
.ListFillRange = str
.LinkedCell = Target.Address
End With
'cboTemp.Activate
Me.TempCombo.Activate
'open the drop down list automatically
Me.TempCombo.DropDown
End If
errHandler:
Application.EnableEvents = True
Exit Sub
End Sub
我尝试了几件事,而对于我的生活,我无法弄清楚改变了什么。 任何帮助将不胜感激。谢谢。
答案 0 :(得分:6)
我遇到了同样的错误,并且能够像Rory建议的那样解决它。我在我的机器上搜索了* .exd文件,发现了一些。删除C:\Users\<username>\AppData\Local\Temp\Excel8.0\MSForms.exd
后,问题就解决了......其他问题似乎与Excel中的ActiveX控件无关。
答案 1 :(得分:1)
看起来代码来自这样的示例:http://www.contextures.com/xlDataVal10.html
除了你的代码已注释掉激活cboTemp组合框的行。您的代码正在尝试访问工作表的TempCombo属性(我认为不存在)。在突出显示的错误行上方的行上取消注释'cboTemp.Activate
。
答案 2 :(得分:0)
我有同样的问题,今天早上我的代码破了。幸运的是,我记得我本周末运行了Windows Update。我提供了一个系统恢复(最早可用的恢复点是12月8日),现在问题已经消失。
我从来没有理解那些一直在进行备份并在系统更新之前/之后花费大量时间进行测试的经验丰富的服务器人员,这些年来我从来没有遇到过任何问题。现在我确定弄明白了他们在谈论什么。学习到教训了。我会尝试在几个月后再次运行win更新,希望MS在那时解决了这个问题。
祝你好运