如何在vba中记录单元格的变化

时间:2015-10-18 15:16:15

标签: excel vba excel-vba

程序说明每次单元格更改时,我都希望将此程序发送到msgbox。对于前者如果我在row1和row2 BBB中有AAA,我希望我的代码能够识别单元格何时从一个字符串更改为另一个字符串。

问题之前我从未使用过更改功能,因此我不知道在我的代码中将它用于何处。任何人都可以帮我解决如何使用更改功能或任何其他方式来跟踪字符串更改。不知怎的,我的改变功能不起作用。

Sub xym()

    Dim x As String, dtext, lastrow As Long, ws1 As Worksheet, wb As Workbook
    Dim rangnum As Range, i As Long
    Set wb = ActiveWorkbook
    Set ws1 = wb.Worksheets("Sheet1")
    lastrow = ws1.UsedRange.Rows.Count + 1
    Set rangenum = ws1.Range("A1:A" & lastrow)
    dtext = rangenum.Value

    For i = 1 To UBound(dtext, 1)
        If dtext(i,1).change then msgbox "yes"
    Next i

End Sub

2 个答案:

答案 0 :(得分:0)

您需要使用工作表更改事件 - 有关如何在下一页上使用此事件的明确说明,包括如何仅响应某些单元格中发生的更改。

Excel VBA:单元格更改/输入数据时自动运行Excel宏。工作表更改事件
http://www.ozgrid.com/VBA/run-macros-change.htm

答案 1 :(得分:0)

请试试这个:

Sub xym()
    Dim i&, v
    With Sheet1.[a1]
        v = .Resize(.Item(.Parent.Rows.Count).End(xlUp)(2).Row)
    End With
    For i = 2 To UBound(v) - 1
        If v(i, 1) <> v(i - 1, 1) Then
            MsgBox "Yes." & vbLf & "Cell A" & i & " is different."
        End If
    Next
End Sub