VBA - 编译错误 - 未找到方法或数据成员

时间:2014-12-10 14:26:06

标签: excel vba excel-vba

我已经使用这个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

我尝试了几件事,而对于我的生活,我无法弄清楚改变了什么。 任何帮助将不胜感激。谢谢。

3 个答案:

答案 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在那时解决了这个问题。

祝你好运