【发布时间】: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