You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用户窗体ComboBox运行时错误“13”(类型不匹配)求助

解决VBA UserForm中运行时错误13(类型不匹配)的问题

嘿,我来帮你搞定这个类型不匹配的错误!你的代码思路没问题,但有个容易踩的坑导致了这个问题,我给你拆解一下:

核心问题原因

你声明了Dim xSheet As Worksheet,但遍历的是ActiveWorkbook.Sheets集合——这个集合不仅包含普通的工作表(Worksheet),还包含图表工作表(Chart)、宏工作表(MacroSheet)等其他类型的Sheet对象。当循环到非Worksheet类型的Sheet时,把它赋值给Worksheet类型的变量xSheet,就会触发类型不匹配错误。

解决方案

这里有两个针对性的修复方案,你可以根据需求选择:

方案1:只遍历普通工作表(推荐,如果你只需要工作表)

把遍历的集合从Sheets改成Worksheets,这样只会处理普通的工作表:

Private Sub UserForm_Activate()
    Dim xSheet As Worksheet
    ComboBox2.Clear
    ' 只遍历普通工作表集合
    For Each xSheet In ActiveWorkbook.Worksheets
        ComboBox2.AddItem xSheet.Name
    Next xSheet
End Sub

方案2:包含所有类型的Sheet(如果需要图表等Sheet)

把xSheet的类型改成Object,这样可以兼容所有Sheet类型:

Private Sub UserForm_Activate()
    Dim xSheet As Object
    ComboBox2.Clear
    For Each xSheet In ActiveWorkbook.Sheets
        ' 所有Sheet对象都有Name属性,直接添加即可
        ComboBox2.AddItem xSheet.Name
    Next xSheet
End Sub

额外检查点

除了上面的核心修复,你还可以确认这两个细节:

  • 确保UserForm里确实存在名为ComboBox2的组合框控件,没有拼写错误或者控件重名的情况。
  • 如果你的代码是写在当前工作簿里的,建议把ActiveWorkbook改成ThisWorkbook,这样可以避免切换工作簿导致的错误:
    For Each xSheet In ThisWorkbook.Worksheets
    

内容的提问来源于stack exchange,提问作者Jimanjay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:08