将全局变量传递给自定义UserForm

时间:2013-12-20 06:37:40

标签: vb.net visual-studio-2010 outlook outlook-addin outlook-vba

让以下代码以.Count变量结束。我想取整数值并将其输出到自定义UserForm中的句子。我如何在Visual Studio 2012设计器中执行此操作。这真的让我很难过。谢谢!

Public Shared Property mailItem As Object
Public Shared Property BodyMatchResults As MatchCollection
Public Shared Property SubjectMatchResults As MatchCollection

Public Sub Application_ItemSend(ByVal Item As Object, _
    ByRef Cancel As Boolean) Handles Application.ItemSend

    Dim mailItem As Outlook.MailItem = TryCast(Item, Outlook.MailItem)

    If mailItem IsNot Nothing Then
        Dim attachments = mailItem.Attachments
        For Each attachment As Outlook.Attachment In attachments
            AttachmentQuery(attachment, mailItem, Cancel)
        Next attachment
    End If

    Dim BodyMatchResults As MatchCollection
    Dim SubjectMatchResults As MatchCollection
    Dim RegexObj As New Regex("\b(?!000)(?!666)(?!9)[0-9]{3}[ .-]?(?!00)[0-9]{2}[ .-]?(?!0000)[0-9]{4}\b")
    BodyMatchResults = RegexObj.Matches(mailItem.Body)
    SubjectMatchResults = RegexObj.Matches(mailItem.Subject)
    If BodyMatchResults.Count > 0 Or SubjectMatchResults.Count > 0 Then
        Cancel = True
        MessageBox.Show((BodyMatchResults.Count + SubjectMatchResults.Count))

        ' Access individual matches using AllMatchResults.Item[]
    Else
        Cancel = False
    End If

UserForm非常基本,有三个按钮,上面有警告文字。我希望在那段文字中“你的电子邮件中有”BodyMatchResults.count“或”subjectmatchresults.count“。

1 个答案:

答案 0 :(得分:1)

嗯,你显然正在使用你的.count变量(为了论证,我假设它是Integer类型)。希望你也有自定义UserForm,我们假设你已经调用了UserForm。

在该UserForm中添加以下代码:

Private _count As Integer

Public Sub New (ByVal count AS Integer)
  InitializeCompponent()
  _count = count
End Sub

然后,您可以使用_count变量来显示您想要显示的信息。

现在,当您调用UserForm时,您可以将.count变量传递给它,以便可以像这样使用它:

dim frm as New UserForm(NumberOfCountsIWantToDisplay)

这个基本原则适用于大多数情况。

修改

显然,我没有正确地阅读。您的问题专门询问了传递全局变量的问题。您应该只需从应用程序中的任何位置引用公开定义的全局变量(只要该变量具有应用程序范围)。然而,全局变量可能更麻烦,它们是值得的,如果实际上你只是想从表单a传递一个值到表单b然后我会使用我最初概述的方法误读主题标题,我为此道歉。