VBA - 比较单元格的先前值和当前值

问题描述 投票:0回答:1

“I”列中的单元格的值始终由字母“KW”+数字组成,例如“K31”。我需要比较单元格的数字部分。 “M”列中的值将取决于“I”列中单元格的先前值和当前值之间的差异。例如:“I6”的值为“K37”,则更改为“K39”,“M”列中相应单元格的新值必须更改为“GL”。规则是,如果差异为 2,则“M”列中的单元格值将更改为“GL”,如果差异大于 2,则该值将更改为“FAL”。

此外,第一次在“I”列的任何单元格中插入值时,“M”中的默认值必须为“PV”。

excel vba cell
1个回答
0
投票

我可以使用 Worksheet_SelectChange 事件保存先前的值,并将其与当前值进行比较,但它效果不佳,即使先前值与当前值之间的差异为 2,“M”列中的单元格始终更改为“FAL”而不是“GL”,只有当差异为 3 或更大时才应更改为“FAL”。

`

公共预值作为变体

私有子工作表_SelectChange(ByVal Targe As Excel.Range)

Dim rnc As Range, celda As Range
Set rnc = Intersect(Target, Me.Range("I:I"))
If rnc Is Nothing Then Exit Sub

For Each celda In rnc

    PreValue = CInt(Right(celda.Value, 2))

Next

结束子

私有子工作表_更改(ByVal 目标为 Excel.Range)

Set rnc = Intersect(Target, Me.Range("I:I"))
If rnc Is Nothing Then Exit Sub


If Not rnc Is Nothing Then
    
    For Each cell In rnc
        
        On Error Resume Next
        
        Dim PaNum As Variant
        PaNum = CInt(Right(cell.Value, 2))
        
        Dim NumFila1 As Long
        NumFila1 = cell.Row
        
        MsgBox ValorAnterior

        If PreValue = "" Then
            
            Cells(NumFila1, 13).Value = "Portavoz"
            
        End If
            
        
        If PaNum - PreValue = 2 Then
            
            Cells(NumFila1, 13).Value = "GL"
        End If
            
        
        If PaNum - PreValue >= 3 Then
            
            Cells(NumFila1, 13).Value = "FAL"
            
        End If
        
            
    Next
 
End If

结束子

子错误处理程序()

退出子目录

结束子

`

© www.soinside.com 2019 - 2024. All rights reserved.