Excel VBA – Excel打开时代码中断

我只是发现我的代码,这不是昨天出现的问题。 这是“Sheet1(计算器)”的代码:

Option Explicit Private Sub Worksheet_Activate() Sheets("Calculator").ComboBox1.ListFillRange = "Materials!B4:B7" Sheets("Calculator").ComboBox1.ListIndex = 0 End Sub Private Sub ComboBox1_Change() Sheets("Calculator").Range("T18") = ComboBox1.ListIndex + 1 Select Case Sheets("Calculator").ComboBox1.ListIndex Case 0 Sheets("Calculator").ComboBox2.ListFillRange = "Materials!G4:G5" Sheets("Calculator").ComboBox2.ListIndex = 0 Case 1 Sheets("Calculator").ComboBox2.ListFillRange = "Materials!G6" Sheets("Calculator").ComboBox2.ListIndex = 0 Case 2 Sheets("Calculator").ComboBox2.ListFillRange = "Materials!G7:G10" Sheets("Calculator").ComboBox2.ListIndex = 0 Case 3 Sheets("Calculator").ComboBox2.ListFillRange = "Materials!G11:G12" Sheets("Calculator").ComboBox2.ListIndex = 0 End Select End Sub 

一切工作正常,而Excel打开。 但是,如果我保存并closuresExcel,然后重新打开它,代码中断在“情况0”下的第一行,错误消息:

 Run-time error '438' Object doesn't support this property or method 

然后当我停止debugging和更改ComboBox1中的项目时,代码再次正常工作和ComboBox2填充正确的数据。 你有什么想法可以成为问题吗?

这是文件。

不知道你是否正确初始化你的ComboBox对象…..但这应该工作:

 Set ComboBox1 = Sheets("Calculator").Shapes(1) ComboBox1.ControlFormat.ListFillRange = "Materials!B4:B7" 

所以mayb它,因为主要是你缺lessControlFormat的东西!?

 Private Sub ComboBox1_Change() with Sheets("Calculator") .Range("T18") = ComboBox1.ListIndex + 1 if .ComboBox1.ListIndex > -1 Then .ComboBox2.List=sheets("Materials").range(G4:G5").offset(choose(.ComboBox1.ListIndex+1).value end with End Sub