2016-11-08 16 views
0

複数のモジュールにわたって同じ変数を持つプロジェクトがたくさんあります。各モジュールでは、変数とそれを同じ変数型で同じ値を持つたびに設定します。プロジェクト/ワークブック全体で変数を暗くして設定するにはどうすればよいですか?すべてのモジュールに変数を設定し、すべてのモジュールに変数を設定します。

例:(私はモジュール間で変更されない他の多くの類似した変数と一緒に、以下のすべてを繰り返さなければならなかったワークブックの多くのモジュールを持っている)

Sub PullSFAFiles() 
Dim Wb       As Workbook 
Dim WsSFAFiles     As Worksheet 
Dim WsAllCourses    As Worksheet 
Dim rngAllCourses    As Range 
Dim rngCourse     As Range 
Dim LoSFAFiles     As ListObject 
Dim rngPreviousFiles   As Range 
Dim rngRemoveLines    As Range 

Dim strCourse     As String 
Dim strApp      As String 
Dim strPeCFldrPath    As String 
Dim strFileLocation    As String 
Dim strFileNm     As String 
Dim objFile      As Object 

Dim intSFARow     As Integer 
Dim intCourseRow    As Integer 
Dim intPFilesRow    As Integer 
Dim dtLastUpdate    As Date 
Dim intNumRemove    As Integer 

Set Wb = ThisWorkbook 
Set WsSFAFiles = Wb.Sheets("sfafiles") 
Set WsAllCourses = Wb.Sheets("allcourses") 
Set rngAllCourses = WsAllCourses.Range("tblAllCourses[CourseName]") 
Set LoSFAFiles = WsSFAFiles.ListObjects("tblSFAFiles") 

strEBTypeFolder = "Exercise Booklet" 
strEBfiletype = "EB" 
strCISTypeFolder = "Classroom Information Sheet" 
strCISfiletype = "CIS" 
intCourseRow = rngCourse.Row - 1 
strCourse = rngCourse.Value 
strApp = WsAllCourses.Range("tblallcourses[application]").Rows(intCourseRow) 
strPeCFldrPath = "\\Cx138\training\Live\Credentialed Trainers\" 
strEBFileLocation = strApp & "\" & strTypeFolder & "\" & strCourse & "_" & strEBfiletype & "*" & ".pdf" 
strEBFileNm = Dir(strPeCFldrPath & "\" & strEBFileLocation) 
strCISFileNm = Dir(strPeCFldrPath & "\" & strCISFileLocation) 
+1

これらのすべてを保持するクラスと、そのクラスのインスタンスを返すFunctionを使用できます。 –

+1

このリンクをチェック:http://stackoverflow.com/questions/27576457/how-to-declare-global-variables-in-excel-vba-to-be-visible-accross-the-workbook – bzimor

答えて

3

Publicで変数宣言Dimを交換してください。したがって:

Public rngCourse as Range 

Public strCourse As String 

モジュールレベルで宣言します。

+0

ありがとう、私はそれを解決したPublicを使用して変数を宣言します。次に、私のプロジェクト全体に共通するすべての変数を定義するためのサブプロシージャー名 "DefineVariables"を作成しました。私のプロジェクトの中で他のいずれかのサブシステムを呼び出す前に、まず "DefineVariables"サブを呼び出して、すべての変数を宣言して設定します。 – Chuck0185

関連する問題