Excel VBA-打开Excel时代码中断
我刚刚发现我的代码有问题,昨天没有出现。 这是“Sheet1(计算器)”中的代码: 当Excel打开时,一切正常。但如果我保存并关闭Excel,然后重新打开它,代码会在“案例0”下的第一行中断,并显示错误消息:Excel VBA-打开Excel时代码中断,vba,excel,Vba,Excel,我刚刚发现我的代码有问题,昨天没有出现。 这是“Sheet1(计算器)”中的代码: 当Excel打开时,一切正常。但如果我保存并关闭Excel,然后重新打开它,代码会在“案例0”下的第一行中断,并显示错误消息: Run-time error '438' Object doesn't support this property or method 然后,当我停止调试并更改ComboBox1中的项时,代码再次正常工作,Combox2中填充了正确的数据。你知道哪里会有问题吗 不知道是否正确初始化了C
Run-time error '438'
Object doesn't support this property or method
然后,当我停止调试并更改ComboBox1中的项时,代码再次正常工作,Combox2中填充了正确的数据。你知道哪里会有问题吗
不知道是否正确初始化了ComboBox对象……但这应该可以:
Set ComboBox1 = Sheets("Calculator").Shapes(1)
ComboBox1.ControlFormat.ListFillRange = "Materials!B4:B7"
所以可能主要是因为你错过了ControlFormat 错误信息是什么?哦,对不起,我忘了。问题现在更新为错误消息。如果需要,我可以将整个xlsm文件发送到internet。@SilentCry您是否以某种方式解决了此问题?它对我不起作用。。。这是一个文件:我对VBA非常陌生,所以我不明白为什么当打开Excel时,它会起作用,但当我刚刚打开Excel时,它不会起作用;改为使用.List:Sheets(“计算器”).ComboBox1.List=板材(“材料”).Range(“B4:B7”).valueWith Sheets(“计算器”).ComboBox2.List=板材(“材料”).Range(“G4:G5”)。值以不工作结束。使用工作表(“计算器”).ComboBox2.ListFillRange=“Materials!G4:G5”以WORKS结尾。但是当excel刚刚打开时,仍然不起作用:(OMG,如何在这里添加换行符?手册告诉我们,这两个空格是需要的,但它不起作用:(一个糟糕而难看的解决方法就是避免错误,在错误上添加一个
,然后在私有子组合框1\u change()的开始处继续)
函数。专用子组合框1\u Change()
在出现错误时继续下一步
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
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