我正在制作一本工作簿而且我收到一个让我发疯的错误。我真的不知道这里出了什么问题。
在主工作表(Bestandsübersicht)上,我有一个名为ddBestand的组合框。在该组合框的更改事件中,它运行一个脚本,检查是否应启用或禁用某些按钮。代码是:
Private Sub ddBestand_Change()
On Error GoTo ExitSub
Dim i As Integer
i = 3
Dim WS As Worksheet
Set WS = Sheets("Bestandsübersicht")
If ddBestand.Value = "" Then GoTo ExitSub
Do Until WS.Cells(i, 1).Value = ddBestand.Value
i = i + 1
Loop
If WS.Cells(i, 13).Value = 0 Or _
Right(Sheets("Bestandsübersicht").Range("AL1").Value, 3) <> "yes" Then
btnNetwork.Enabled = False
Else
btnNetwork.Enabled = True
End If
btnChange.Enabled = True
btnSpecifics.Enabled = True
btnCopy.Enabled = True
Exit Sub
ExitSub:
btnChange.Enabled = False
btnSpecifics.Enabled = False
btnNetwork.Enabled = False
btnCopy.Enabled = False
End Sub
当我使用ddBestand时,这完全正常。但有时当我运行其他脚本时,这个脚本意外地开始运行,即使这些脚本与彼此不相关。例如,当我为一个userform(从另一个工作表启动)运行初始化时,它开始在这个range.sort方法中运行:
Sheets("DB_Network").Columns("A:C").Sort key1:=Sheets("DB_Network").Range("A2"), _
order1:=xlAscending, Header:=xlNo
它给出错误1004(无法设置OLEObject类的启用属性(这是logica,因为我们在另一个工作表上,这些按钮的属性是错误的。)因为我不知道如何停止第一个脚本运行,我通过将OLEObjects更改为:
来修复脚本 Sheets("Bestandsübersicht").OLEObjects("btnChange").Object.Enabled = True
解决症状可能不是最漂亮的解决方案,但由于我无法找出问题到底是什么,我认为这是一个合适的解决方案。但它变得更疯狂了。我仍在使用本文档的另一个版本,因为我需要它来完成我的工作。不知怎的,相同的排序方法开始在另一个文档中运行相同的脚本,这导致发生相同的错误。现在我真的想解决这个问题,因为我不希望它意外地在其他文档中运行脚本。这里有谁可以提供帮助吗?非常感谢!
答案 0 :(得分:1)
我猜你的组合框使用ListFillRange和/或LinkedCell属性直接链接到一个范围。出于这个原因,这不是一个好主意。我建议您使用代码来使用其.List
属性来填充控件,这比.AddItem
更容易,更快:
Sheets("Bestandsübersicht").OLEObjects("ddBestand").Object.List = Sheets("blah").Range("A2:A100").Value
例如。