2015-05-20 4 views
0

Я использую VBA в Word 2013 для оценки и возврата некоторой базовой информации, которую конечный пользователь будет вводить в документе в некоторых старых формах. Мой код, который работает хорошо, если у меня есть все это в одной подлодке, является:Сохранение/вызов переменных VBA в Word 2013

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 

Теперь я пытаюсь отделить переменные и б переменных подпрограмм в свои собственные (индивидуальных) подразделах подпрограммы, но переменные не исчезли. Любая помощь, как это сделать?

ответ

0

Есть два способа сделать это, либо вы объявляете отдельные подпрограммы, например. суб MySub (MYVAR как целое число) затем вызвать подлодку в коде с: MySub (б) 2-й способ объявить переменные вне каких-либо подпрограмм, как: общественности б, как целое , то вы можете просто использовать их в все подпрограммы.

+0

Спасибо ... Мне нравится последний вариант намного лучше, и он отлично работает! Это немного чище, и мне не нужно редактировать мой существующий код. Есть ли недостатки в использовании его по первому варианту? – Mark

+0

В меньшем решении на самом деле нет, но если вы планируете его расширить, он может стать беспорядочным, например. 10 публичных варсов с богом знают, где задания – KKowalczyk

Смежные вопросы