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

VBA中如何将Target Address应用于多行实现单元格联动赋值

调整后可适配B4-B10行的代码

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rowNum As Long
    ' 过滤非目标范围的修改操作
    If Target.Count <> 1 Then Exit Sub
    If Intersect(Target, Me.Range("B4:B10")) Is Nothing Then Exit Sub
    
    ' 提取当前修改单元格的行号
    rowNum = Target.Row
    ' 关闭事件触发,防止修改单元格时递归触发本事件
    Application.EnableEvents = False
    
    Select Case Target.Value
        Case "AA1"
            Me.Range("C" & rowNum).Value = "Please Select"
            Me.Range("D" & rowNum).Value = "Please Select"
        Case "BB1", "CC1", "DD1", "EE"
            Me.Range("C" & rowNum).Value = "Please Select"
            Me.Range("D" & rowNum).Value = " "
        Case ""
            Me.Range("F" & rowNum).Value = ""
            Me.Range("D" & rowNum).Value = " "
    End Select
    
    ' 恢复事件触发
    Application.EnableEvents = True
End Sub

调整说明

  • 新增触发范围校验:通过Intersect方法判断修改的单元格是否属于B4-B10区间,同时限制仅单个单元格修改时生效,避免批量操作报错。
  • 动态行号适配:通过Target.Row获取当前修改单元格的行号,所有同行C、D、F列的操作都绑定该行号,实现修改任意B4-B10单元格时自动操作对应行的其他单元格。
  • 优化分支逻辑:将原有重复的多分支ElseIf判断合并为Select Case结构,相同逻辑的条件合并书写,后续调整规则时更易维护。
  • 新增事件开关:修改单元格前关闭事件触发,避免修改C/D/F列时再次触发本事件导致死循环,修改完成后恢复事件开关不影响其他功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:24:01