Excel OLEObject没有n';不再有Value属性(以前使用的代码)

Excel OLEObject没有n';不再有Value属性(以前使用的代码),excel,vba,Excel,Vba,我正在尝试使用Excel中的“自动填充”下拉列表 我用的代码,我从这里得到的 突然停止工作(之前工作了2个月) 现在我得到了438个错误 此行中的“对象不支持此属性或方法:。值” =“” 奇怪的是,当我尝试在即时窗口中键入以下内容时:?cbotemp.value,promt向我显示cbotemp对象根本没有value属性 我们将非常感谢您的帮助。我整晚都在努力解决这个问题,现在它变得绝望了 以下是源代码: Option Explicit ' Developed by Contextures

我正在尝试使用Excel中的“自动填充”下拉列表

我用的代码,我从这里得到的

突然停止工作(之前工作了2个月)

现在我得到了438个错误

此行中的“对象不支持此属性或方法:。值” =“”

奇怪的是,当我尝试在即时窗口中键入以下内容时:?cbotemp.value,promt向我显示cbotemp对象根本没有value属性

我们将非常感谢您的帮助。我整晚都在努力解决这个问题,现在它变得绝望了

以下是源代码:

Option Explicit

' Developed by Contextures Inc.
' www.contextures.com

Private Sub TempCombo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Hide combo box and move to next cell on Enter and Tab
Select Case KeyCode
Case 9
    ActiveCell.Offset(0, 1).Activate
Case 13
    ActiveCell.Offset(1, 0).Activate
Case Else
    'do nothing
End Select
End Sub

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
On Error GoTo errHandler

If Target.Validation.Type = 3 Then
    Cancel = True
End If

Set cboTemp = ws.OLEObjects("TempCombo")
On Error Resume Next
With cboTemp
    .ListFillRange = ""
    .LinkedCell = ""
    .Visible = False
End With

On Error GoTo errHandler

If Target.Validation.Type = 3 Then
    Application.EnableEvents = False
    str = Target.Validation.Formula1
    str = Right(str, Len(str) - 1)
    With cboTemp
        .Visible = True
        .Left = Target.Left
        .Top = Target.Top
        .Width = Target.Width + 15
        .Height = Target.Height + 5
        .ListFillRange = ws.Range(str).Address
        .LinkedCell = Target.Address
    End With
    cboTemp.Activate
    'open the drop down list automatically
    Me.TempCombo.DropDown
End If
errHandler:
Application.EnableEvents = True
Exit Sub
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str     As String
Dim cboTemp As OLEObject
Dim ws      As Worksheet
Set ws = ActiveSheet
Set cboTemp = ws.OLEObjects("TempCombo")

On Error Resume Next

If cboTemp.Visible = True Then
    With cboTemp
        .Top = 10
        .Left = 10
        .ListFillRange = ""
        .LinkedCell = ""
        .Visible = False
        .Value = ""          'here i get 438 error
    End With
End If
errHandler:
Application.EnableEvents = True

Exit Sub

End Sub

此部分代码中存在错误:

...
Dim cboTemp As OLEObject
...
  Set cboTemp = ws.OLEObjects("TempCombo")
    On Error Resume Next
  If cboTemp.Visible = True Then
    With cboTemp
      .Top = 10
      .Left = 10
      .ListFillRange = ""
      .LinkedCell = ""
      .Visible = False
      .Value = ""
    End With
  End If
由于
cboTemp
属于
OLEObject
类型,因此它实际上没有属性
。但“错误恢复下一步”应防止此错误中断程序

如果不是(或不是更多)这种情况,则:

VBA编辑器-
工具>选项>常规>错误捕获

设置为“所有错误时中断”

默认值为
在未处理错误时中断


将其设置回默认值或根本不设置
.Value=”“
。没有必要。

请您张贴代码并指出相关行,好吗?我不打算下载一个启用宏的随机.zip文件,也不确定其他人对此有何看法。布鲁斯,我试图发布源代码,但无法理解编辑器界面抱歉,我应该考虑这种threatAxel!谢谢!我真蠢。我改变了错误处理选项,它成功了!我不希望这个源代码发布错误的代码。显然我错了:(