从私人表格中保存全局变量

时间:2014-08-05 07:56:15

标签: vb.net vba dictionary global-variables public

我正在尝试在保存工作表时发送包含更新的电子邮件。为此,我正在跟踪更改,然后尝试将这些更改保存为全局字符串:

Public outString As String

Public Sub Worksheet_Change(ByVal Target As Range)
Dim colN, rowN As Integer
Dim changeHeading As String
Dim drawingNumber, partNumber As Integer
'Do nothing if more than one cell is changed or content deleted

If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub

        'Stop any possible runtime errors and halting code

        On Error Resume Next

            Application.EnableEvents = False

            colN = Target.Column
            rowN = Target.Row
            changeHeading = ThisWorkbook.Sheets("List").Cells(1, colN).Value    'Header     of the changed cell
            partNumber = ThisWorkbook.Sheets("List").Cells(rowN, 2).Value       'Partnumber changed
            drawingNumber = ThisWorkbook.Sheets("List").Cells(rowN, 4).Value    'Drawingnumber changed
            outString = outString & vbNewLine _
               & "PartNumber: " & partNumber & " DrawingNumber: " & drawingNumber _
                & " " & changeHeading & ": " & Target & vbNewLine

            'Turn events back on

            Application.EnableEvents = True

        'Allow run time errors again

        On Error GoTo 0
End Sub

所以这段代码很好用,除非我改变同一行上的几个列,然后每个更改将显示在一个新行而不是同一行,也许我必须使用一个字典,其中partnumber作为键来避免这个

然后在本工作表中我有以下代码

Public outString
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call track
Call missingDrawings
Call updateText
End Sub

但是现在outString变量是,那么在声明全局变量outString时我做错了什么?

1 个答案:

答案 0 :(得分:0)

您似乎在工作表中有两个名为outString的变量,在工作簿中有一个变量。你应该只有一个。如果您将此文件留在此工作簿中(添加As String将是一个好主意),那么您可以使用ThisWorkbook.outString从工作表中访问它。