【问题标题】:saving global variable from private sheet从私有工作表中保存全局变量
【发布时间】:2014-09-27 19:37:45
【问题描述】:

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

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

所以这段代码很好用,除非我在同一行上更改几列,然后每个更改都将显示在新行而不是同一行上,也许我必须使用带有零件号的字典来避免这种情况.

然后在这个工作簿表中我有以下代码

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

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

【问题讨论】:

  • 请将答案标记为已接受的答案。谢谢。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2014-06-17
    相关资源
    最近更新 更多