Excel VBA中无法为ComboBox指定RowSource属性的问题求助
解决Excel VBA依赖型ComboBox报错438的问题
错误原因很明确:你用的是表单控件类型的ComboBox,而RowSource是ActiveX控件ComboBox独有的属性,表单控件没有这个属性,所以会提示“对象不支持该属性或方法”,输入代码时也不会出现这个属性的提示。
两种解决方案:
方案1:继续使用表单控件
把代码里的RowSource替换成表单控件对应的ListFillRange属性即可,修改后的代码如下:
Option Explicit Private Sub conduitTypeBox_Change() Select Case conduitTypeBox.Value Case Is = "IMC" conduitSizeBox.ListFillRange = "imcSize" Case Is = "LFMC" conduitSizeBox.ListFillRange = "lfmcSize" Case Is = "RMC" conduitSizeBox.ListFillRange = "rmcSize" Case Is = "PVC (Schedule 80)" conduitSizeBox.ListFillRange = "pvc80Size" Case Is = "PVC (Schedule 40)" conduitSizeBox.ListFillRange = "pvc40Size" Case Is = "PVC (Type A)" conduitSizeBox.ListFillRange = "pvcaSize" Case Is = "PVC (Type EB)" conduitSizeBox.ListFillRange = "pvcebSize" End Select End Sub
方案2:切换为ActiveX控件
- 删除当前的表单ComboBox,点击「开发工具」→「插入」→ 选择「ActiveX控件」里的ComboBox(带齿轮图标的那个),重新添加两个ComboBox并命名为
conduitTypeBox和conduitSizeBox - 此时你的原代码不需要修改,
RowSource属性会正常生效,输入代码时也会出现属性提示
快速区分两种ComboBox的方法
右键点击ComboBox:
- 若菜单里有「查看代码」选项,说明是ActiveX控件
- 若菜单里主要选项是「指定宏」,说明是表单控件
内容的提问来源于stack exchange,提问作者Nick Lybarger
相关产品推荐
相关产品推荐

