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

VBA创建Excel联动下拉列表时遇运行时错误91求助

问题分析与修复

错误根源

你遇到的Runtime Error 91,是因为在进入With cell.Validation块之前,已经执行了cell.Validation.Delete——这会直接销毁当前单元格的Validation对象,导致后续With块无法找到有效的对象引用。

另外代码还有两个参数错误,会进一步导致验证规则无法正确创建:

  1. Operator参数冗余:xlBetween是用于范围类验证(比如数值区间)的操作符,不适用于下拉列表验证(xlValidateList),这个参数完全多余。
  2. AlertStyle参数可能不符合需求:xlValidAlertStop会在输入无效值时弹出强制停止的对话框,如果你只是需要普通的下拉提示,建议改用xlValidAlertInformation或者省略该参数(使用默认值)。

修正后的代码

For Each cell In ws.Range("L2:L" & lastRow)
    ' 直接通过With块管理Validation对象
    With cell.Validation
        .Delete ' 先清除已有验证
        ' 添加下拉列表验证,修正参数问题
        .Add Type:=xlValidateList, _
             AlertStyle:=xlValidAlertInformation, _
             Formula1:="=INDIRECT(SUBSTITUTE(" & cell.Offset(0, -1).Address & ", "" "", ""_""))"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
        .InputTitle = "Select an Item"
    End With
Next cell

额外注意事项

  • 确保lastRow变量已经正确计算为L列的最后一行数据行,避免处理空单元格
  • 确认ws是已正确赋值的工作表对象(比如Set ws = ThisWorkbook.Sheets("Sheet1"))
  • 确保K列对应单元格替换后的名称(把空格换成下划线),确实存在对应的单元格区域或命名范围——这是联动下拉能生效的前提

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:22:37