Workbook_打开MsgBox弹出窗口,其中包含从前一天开始的单元格更改列表

时间:2012-08-02 14:16:45

标签: excel excel-vba vba

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

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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

我简化了这个并使子名更好。