首页 > 解决方案 > 当旁边的单元格更改时更改单元格

问题描述

考虑在工作表中有三列。 在此处输入图像描述

如果 B 列或 D 列有任何变化,则应仅在 E 列中为更改的行打印数据。

条件是:

我设法通过单击按钮而不是自动地实现了这一点,它还更改了 E 列中的每个单元格,而不仅仅是更改的行中。因此,如果您有任何想法,请提及。

Sub effected()    
    Dim R As Long, Ws As Worksheet
    
    Set Ws = Worksheets("Sheet1")
    
    For R = Ws.Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
        If Ws.Range("B" & R).Value = "Process" And Ws.Range("D" & R).Value = "ADD" Then
            Ws.Range("E" & R).Value = "MfgddnS"
            Ws.Range("E" & R).Interior.ColorIndex = 41
        ElseIf Ws.Range("B" & R).Value = "Process" And Ws.Range("D" & R).Value = "REMOVE" Then
            Ws.Range("E" & R).Value = "MetrhS"
            Ws.Range("E" & R).Interior.ColorIndex = 6
        ElseIf Ws.Range("B" & R).Value = "Process" And Ws.Range("D" & R).Value = "MODIFY" Then
            Ws.Range("E" & R).Value = "qeth"
            Ws.Range("E" & R).Interior.ColorIndex = 8
        Else
            Ws.Range("E" & R).Value = "NOTHING"
            Ws.Range("E" & R).Interior.ColorIndex = 4
        End If
    Next R
End Sub

标签: excelvba

解决方案


Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Range("D:D"), Target) Is Nothing Then

        Dim changedCell As Range
        For Each changedCell In Intersect(Range("D:D"), Target).Cells
       If changedCell.Offset(0, -2).Value = "Process" And changedCell.Offset(0, 0).Value = "ADD" Then
             changedCell.Offset(0, 1).Value = "MfgddnS"
             changedCell.Offset(0, 1).Interior.ColorIndex = 41
            Else
             changedCell.Offset(0, 1).Value = "Nothing"
             changedCell.Offset(0, 1).Interior.ColorIndex = 4


      End If
        Next changedCell
    End If
End Sub

唯一的问题是我如何在代码中提及 B 列


推荐阅读