VBA Excel使用表格模拟跟踪更改

时间:2018-06-08 13:23:37

标签: excel excel-vba ms-word tracking vba

我非常感谢您对以下方面的帮助。 我有一个excel工作文件,在几个工作表中有几个表,我有一个宏,可以在excel上完成工作后复制word文件中的所有表。 然后,该过程将检查单词文件并跟踪其中的更改,以便人们可以查看审阅之前和之后的情况。 此时我的想法如下:不是跟踪单词文件中的更改并且还使用新修改更改excel文件,我想直接按下按钮,激活允许用户自动写入红色的宏只有他现在在excel中添加的新东西,然后使用我已经拥有的宏来生成新的word文件,这样新的word文件将以红色显示更改的内容并且看起来像跟踪更改(删除的单词除外)这不会出现,但它很好)。 这将避免用户进行两次相同的更改(一次在单词中,一次在excel中),因为两个文件必须在最后更新。 只要按下按钮,你能帮助我在那个宏上写下红色的新东西吗?我已经尝试使用Worksheet_changes(byVal target作为范围),但它总是处于活动状态并且不能完全按照我要求的方式执行(我不能在excel中使用跟踪更改,因为文件有表格,按钮显示为灰色)

提前多多感谢!!

1 个答案:

答案 0 :(得分:0)

感谢您的回复。这就是我现在使用的:

Option Explicit
Public oldValue As Variant

Public Sub Worksheet_SelectionChange(ByVal Target As Range)

    oldValue = Target.Value

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oldColor

    If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
        If Target.Value <> oldValue Then
            oldColor = Target.Font.ColorIndex
            Target.Characters(Len(oldValue) + 1, Len(Target) - Len(oldValue)).Font.ColorIndex = IIf(oldColor = 3, 5, 3)
        End If
    End If

End Sub

然而,它始终处于活动状态(我只想在按下按钮后激活它),而且当我在单词中间更改某些内容时,它只会将字体颜色更改为同一个单词的最右边的字母,因为它只注意到有多少字母改变了但没有改变的地方。

不幸的是,我不能完全删除excel(也不是Word),因为excel文件是主要的官方文件,并且每个更改都将首先在word中进行,然后需要在相关的excel文件中进行报告。您应该将word文件看作“演示文件”(更方便)和excel文件作为实际的官方文件,这些文件也将被存储以供将来参考(这就是必须始终更新的原因)。