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

Excel VBA技术求助:输入指定值后自动填充同行单元格代码修正

修正后的VBA代码方案

原代码问题分析

  1. 语法错误:Set zng Range ("K6:K100") 缺少赋值等号,Range ("E6:E100") "NA" 缺少赋值运算符(=),且未限定目标行
  2. 逻辑错误:直接对整个E6:E100区域赋值,而非仅操作输入"free"的单元格所在行
  3. 遗漏事件恢复:未重新启用Application.EnableEvents,会导致后续Excel事件触发失效
  4. 大小写匹配问题:原代码判断Target.Value = "Free",无法匹配用户输入的小写"free"

修正后的代码

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim zng As Range
    Dim cell As Range
    
    ' 定义监控范围:K6到K100
    Set zng = Me.Range("K6:K100")
    
    ' 检查目标单元格是否在监控范围内
    If Not Intersect(Target, zng) Is Nothing Then
        Application.EnableEvents = False ' 禁用事件防止循环触发
        
        ' 处理批量粘贴的情况,遍历每个受影响的单元格
        For Each cell In Intersect(Target, zng)
            ' 不区分大小写判断是否输入"free"
            If LCase(cell.Value) = "free" Then
                ' 对当前单元格所在行的E-H列赋值"NA"
                Me.Range("E" & cell.Row & ":H" & cell.Row).Value = "NA"
            End If
        Next cell
        
        Application.EnableEvents = True ' 重新启用事件
    End If
End Sub

关键修正点说明

  • 补充语法缺失的等号与赋值运算符,修正代码编译错误
  • 使用cell.Row获取输入单元格的行号,精准定位该行的E-H列,避免全局赋值
  • 添加循环处理Target为多个单元格的场景(如批量粘贴)
  • 用LCase()统一转换为小写判断,兼容"Free"、"FREE"等不同大小写输入
  • 最后强制恢复Application.EnableEvents = True,确保后续Excel功能正常

内容的提问来源于stack exchange,提问作者Vikram Kamath Mundkur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:22:44