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

Word/VBA下拉菜单更新单元格内容时遇错误13类型不匹配

问题:Word VBA下拉控件触发更新时出现错误13(类型不匹配)

问题背景

要制作含表格的Word文档,实现选中单元格内下拉菜单选项时,另一单元格自动更新内容。已完成配置:

  • 设置标题为“KörperTypen”的下拉内容控件(名称与值一致)
  • 目标单元格添加标题为“Klassifizierungen”的纯文本内容控件

编写的VBA代码如下:

Sub UpdateContent()
    Dim dropdown As ContentControl
    Dim cell As ContentControl
    
    Set dropdown = ActiveDocument.SelectContentControlsByTitle("KörperTypen").Item(1)
    Set cell = ActiveDocument.SelectContentControlsByTitle("Klassifizierungen").Item(1)
    
    
    Select Case dropdown.DropdownListEntries(dropdown.Range.Text).Value
        
        Case "T1001"
            cell.Range.Text = "14C33242"
        Case "T2001"
            cell.Range.Text = "14C33342"
        Case "T3001"
            cell.Range.Text = "14C43342"
        Case "T4001"
            cell.Range.Text = "14C33342"
        Case "T5001"
            cell.Range.Text = "12C33342"
        Case "T6001"
            cell.Range.Text = "14C33342"
        Case "T7001"
            cell.Range.Text = "14C33342"

    End Select
End Sub

运行时出现错误13(类型不匹配),已确认控件标题无误,尝试将值改为数字仍报错。单独查看dropdown.DropdownListEntries(dropdown.Range.Text).Value可得到正确结果(如"T1001"),但代码无法正常执行。

错误原因

Select Case语句中的表达式写法存在问题:DropdownListEntries(item)的索引应为序号或列表项名称,虽然单独调用dropdown.DropdownListEntries(dropdown.Range.Text).Value能返回正确值,但在Select Case的上下文里,该表达式的求值逻辑会触发类型不匹配——因为DropdownListEntries(item)返回的是ContentControlListEntry对象,后续的.Value虽然能取到文本,但整个表达式的类型判断逻辑在Select Case中无法正确匹配。

修正方案

直接获取下拉控件的选中文本或选中值作为Select Case的判断条件,无需通过DropdownListEntries间接取值。

修正后的代码(方式1:使用选中文本)

Sub UpdateContent()
    Dim dropdown As ContentControl
    Dim cell As ContentControl
    
    Set dropdown = ActiveDocument.SelectContentControlsByTitle("KörperTypen").Item(1)
    Set cell = ActiveDocument.SelectContentControlsByTitle("Klassifizierungen").Item(1)
    
    Select Case dropdown.Range.Text
        Case "T1001"
            cell.Range.Text = "14C33242"
        Case "T2001"
            cell.Range.Text = "14C33342"
        Case "T3001"
            cell.Range.Text = "14C43342"
        Case "T4001"
            cell.Range.Text = "14C33342"
        Case "T5001"
            cell.Range.Text = "12C33342"
        Case "T6001"
            cell.Range.Text = "14C33342"
        Case "T7001"
            cell.Range.Text = "14C33342"
    End Select
End Sub

修正后的代码(方式2:使用选中值,更严谨)

因为下拉控件的名称与值一致,也可以直接用SelectedValue:

Sub UpdateContent()
    Dim dropdown As ContentControl
    Dim cell As ContentControl
    
    Set dropdown = ActiveDocument.SelectContentControlsByTitle("KörperTypen").Item(1)
    Set cell = ActiveDocument.SelectContentControlsByTitle("Klassifizierungen").Item(1)
    
    Select Case dropdown.SelectedValue
        Case "T1001"
            cell.Range.Text = "14C33242"
        Case "T2001"
            cell.Range.Text = "14C33342"
        Case "T3001"
            cell.Range.Text = "14C43342"
        Case "T4001"
            cell.Range.Text = "14C33342"
        Case "T5001"
            cell.Range.Text = "12C33342"
        Case "T6001"
            cell.Range.Text = "14C33342"
        Case "T7001"
            cell.Range.Text = "14C33342"
    End Select
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:27:26