0

我正在使用一系列绘图包创建此工作表(我是一名工程师)。我希望我的用户能够在他们启动 excel 应用程序时看到我在前一天修改过的绘图包列表。我想要一个显示该列表的弹出消息框。所以我做了一些研究,我知道我需要设置一个更改检测宏(以检测我已更改的单元格)和一个带有消息框的 workbook_open,其中包含前一天修改的单元格列表。

我不知道如何使用 msgbox 代码行插入单元格值,或者如何设置整个事情。

任何帮助将不胜感激。

4

1 回答 1

1

我同意 Siddharth - 最简单的方法可能是使用缓冲区工作表。

您可以每天创建缓冲区,然后在打开工作簿时将输入的数据与缓冲区进行比较。然后创建一个更新的缓冲区。

这将起作用;虽然它不是使用消息框,而是突出显示 sheet1 和列 A 中上次打开时更改的单元格 - 我个人更喜欢突出显示单元格 - 但如果你对不应该的消息框心存感激难度不大:

Sub Auto_Open()

ClearSheet1Formatting

CompareValuesBetweenTwoWorksheets

MsgBox "Hi, thanks for opening me Dora. The cells that are highlighted were changed on last open."

UpdateBufferSheet

End Sub


Sub CompareValuesBetweenTwoWorksheets()

Dim s1 As Worksheet
Dim s2 As Worksheet
Dim j As Long
Dim jj As Long
Dim CheckColumn As Integer
CheckColumn = 1
Set s1 = Sheet1
Set s2 = Sheet2
j = s1.Cells(Rows.Count, CheckColumn).End(xlUp).Row
For jj = 1 To j
    If s1.Cells(jj, CheckColumn).Value <> s2.Cells(jj, CheckColumn).Value Then
        s1.Cells(jj, CheckColumn).Interior.Color = vbYellow
    End If
Next

End Sub

Sub UpdateBufferSheet()

Application.CutCopyMode = True

    Sheets("Sheet1").Select
    Cells.Select
    Selection.Copy
    Sheets("Sheet2").Select
    Cells.Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Range("A1").Select

Application.CutCopyMode = False

End Sub

Sub ClearSheet1Formatting()

    Sheets("Sheet1").Select
    Cells.Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A1").Select

End Sub

我对此进行了简化并使子名称更好。

于 2012-08-02T16:30:13.260 回答