Excel VBA实现单元格跨列同步:初始代码失效及优化方案问询
Excel VBA 列同步需求与代码优化反馈
需求说明
当用户更新B列单元格时,同行N列同步相同值;更新D列时,同行O列同步相同值。
初始无效代码
最初编写的Worksheet_Change事件代码无法实现需求:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 2 Then ThisRow = Target.Row Range("N" & ThisRow).Value = Range("B" & ThisRow).Value End If End Sub
优化后代码
参考相关方案修改代码后实现了多列同步,但尝试用Switch Case处理Range类型失败,现发布优化后的代码寻求反馈:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim client_B As Range, client_N As Range Dim PO_D As Range, PO_O As Range Set client_B = Application.Intersect(Target, Me.Columns("B")) '检测是否修改了B列 Set PO_D = Application.Intersect(Target, Me.Columns("D")) '检测是否修改了D列 If client_B Is Nothing = False Then 'B列有单元格被修改 '遍历B列中被修改的每个单元格 For Each client_N In client_B.Cells client_N.EntireRow.Columns("N").Value = client_N.Value Next client_N ElseIf PO_D Is Nothing = False Then 'D列有单元格被修改 '遍历D列中被修改的每个单元格 For Each PO_O In PO_D.Cells PO_O.EntireRow.Columns("O").Value = PO_O.Value Next PO_O End If End Sub
内容的提问来源于stack exchange,提问作者user2741620
相关产品推荐
相关产品推荐

