【问题标题】:saving/recalling VBA variables in Word 2013在 Word 2013 中保存/调用 VBA 变量
【发布时间】:2015-08-01 20:04:30
【问题描述】:

我在 Word 2013 中使用 VBA 来评分并返回一些基本信息,最终用户将在文档中的某些旧表单字段中输入这些信息。我的代码是:

Option Explicit

Sub ScoreLevel()

Dim a As Integer
Dim b As Integer
Dim Score as Integer
Dim Level as String

If ActiveDocument.FormFields("Text37").Result < "33" Then
    a = 2
Else
    a = 0
End If

If ActiveDocument.FormFields("Text40").Result = "0" Then
    b = 0
ElseIf ActiveDocument.FormFields("Text40").Result = "1" Then
    b = 1
ElseIf ActiveDocument.FormFields("Text40").Result > "1" Then
    b = 2
Else
    b = 0
End If

Score = a + b

Select Case Score
    Case 0 To 1
        Level = "Low"
    Case 2 To 3
        Level = "Moderate"
    Case Is > 3
        Level = "High"
End Select

MsgBox "Score = " & Score & vbNewLine & "Level: " & Level 

End Sub

现在我试图将 a 变量和 b 变量例程分离为它们自己的(单独的)子例程,但变量没有传递下去。任何帮助如何做到这一点?

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    有两种方法可以做到这一点,要么声明单独的子例程,例如 sub mySub(myVar 作为整数) 然后在您的代码中调用 sub : 我的子(b) 第二种方法是在任何子例程之外声明变量,例如: 公共 b 作为整数 那么你可以简单地在所有子程序中使用它们。

    【讨论】:

    • 谢谢...我更喜欢后一种选择,而且效果很好!它更简洁一些,我不必编辑现有代码。与第一个选项相比,使用它有什么缺点吗?
    • 在较小的解决方案中并非如此,但如果您打算扩展它,它可能会变得混乱,例如10 个公共 vars,天知道在哪里分配任务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多