如何定位多个单元格输入 Worksheet_Change 会产生不同的结果?

问题描述 投票:0回答:1
Sub Worksheet_Change(ByVal Target As Range)
    Dim RR As Range, N As Long, v As Variant
    
    Set RR = Intersect(Target, Range("A2"))
    If RR Is Nothing Then Exit Sub

    v = Range("A2").Text
    N = Cells(Rows.Count, "A").End(xlUp).Row + 1
    Application.EnableEvents = False
        Range("A" & N).Value = v
    Application.EnableEvents = True
    
    
End Sub

 Sub B_Worksheet_Change(ByVal Target As Range)
    Dim TT As Range, Z As Long, v As Variant
    
    Set TT = Intersect(Target, Range("B2"))
    If TT Is Nothing Then Exit Sub

    A = Range("B2").Text
    Z = Cells(Rows.Count, "B").End(xlUp).Row + 1
    Application.EnableEvents = False
        Range("B" & Z).Value = A
    Application.EnableEvents = True
    
    
End Sub

附件是 Excel 电子表格和 VBA 代码的照片。我可以复制从“代理名称”下的 A 列第 2 行收到的输入,以自动保存到“其透视列下方的主列表”中。

我希望 Excel 自动复制代理下收到的新输入。交易类型、代理电子邮件地址、电话号码和房产地址自动保存为下面的内存列表。

Worksheet_Change 似乎是针对一个变量输入更改,我如何跟踪具有不同最终参数的多个变量。

本质上,我希望将第 2 行中输入的所有新变量保存在第 11 行及其下方...并创建已保存输入的列表。

谢谢您的帮助,顺便说一句,我是 VBA 编码新手。

Click Here Excel Spreadsheet & Code Thus Far

我尝试了各种故障排除,但我对 VBA 很陌生,似乎无法弄清楚。我还加入了自动化 Discord 以获得额外帮助,并用谷歌搜索了这个问题。

excel vba worksheet-function
1个回答
0
投票

你可以这样做:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, c As Range
    
    Set rng = Application.Intersect(Target, Me.Range("A2:E2")) 'check range of interest
    If rng Is Nothing Then Exit Sub 'exit if no updates in row2
    
    For Each c In rng.Cells        'loop all affected cells
        If Len(c.Value) > 0 Then   'cell has any value?
            'add the value to the list below
            Me.Cells(Rows.Count, c.Column).End(xlUp).Offset(1) = c.Value
        End If
    Next c
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.