ComboBox.Value赋值触发运行时错误380:无效属性值求助
Excel VBA ComboBox赋值触发运行时错误380的解决办法
以下是针对该问题的几种可行解决思路:
临时关闭MatchRequired属性
如果Company控件的MatchRequired属性设为True,赋值时可能因窗体未完全初始化触发错误。可以先关闭该属性,赋值后再恢复:Private Sub UserDisambiguation(ByRef CustomerName As String, ByRef Division As String) With CustomerSelectionForm .Company.MatchRequired = False .Company.Value = CustomerName .Company.MatchRequired = True .Division.Value = Division .Show CustomerName = .Company.Value Division = .Division.Value End With Unload CustomerSelectionForm End Sub提前加载窗体确保列表就绪
直接赋值时可能ComboBox的列表还没填充完成,先加载窗体(不显示)再赋值:Private Sub UserDisambiguation(ByRef CustomerName As String, ByRef Division As String) Load CustomerSelectionForm ' 提前加载窗体,初始化列表 With CustomerSelectionForm .Company.Value = CustomerName .Division.Value = Division .Show CustomerName = .Company.Value Division = .Division.Value End With Unload CustomerSelectionForm End Sub用索引赋值替代字符串匹配
可能存在字符串隐藏字符(如空格、换行)或大小写差异,导致表面匹配但实际不被识别。通过查找列表索引来赋值:Private Sub UserDisambiguation(ByRef CustomerName As String, ByRef Division As String) With CustomerSelectionForm Dim cleanName As String cleanName = Trim(CustomerName) ' 清理首尾空格 Dim matchIndex As Integer matchIndex = .Company.FindStringExact(cleanName) If matchIndex <> -1 Then .Company.ListIndex = matchIndex ' 通过索引设置选中项 End If .Division.Value = Division .Show CustomerName = .Company.Value Division = .Division.Value End With Unload CustomerSelectionForm End Sub修复可能损坏的控件或窗体
如果以上方法都无效,大概率是用户窗体或ComboBox控件损坏。可以:- 导出原用户窗体的
.frm和.frx文件,删除原窗体后重新导入。 - 新建一个用户窗体,复制原控件和代码过去,替换使用。
- 导出原用户窗体的
内容的提问来源于stack exchange,提问作者Toddleson
相关产品推荐
相关产品推荐

