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