Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-打开Excel时代码中断_Vba_Excel - Fatal编程技术网

Excel VBA-打开Excel时代码中断

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

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

当Excel打开时,一切正常。但如果我保存并关闭Excel,然后重新打开它,代码会在“案例0”下的第一行中断,并显示错误消息:

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