3

同じ Excel ワークブックに小さな sub() をたくさん書いた後、同じパーツ コード、変数、および定数を頻繁に使用していることに気付きました。したがって、コードに funcions() を記述し、関数とサブの外側で変数と定数/静的を Public として宣言することにしました。私は vba 宣言に非常に慣れていないため、これはそれほど簡単ではありません。私が達成したいことの要約を1つ紹介しましょう。ワークブックのモジュール ディレクトリの下にある 1 つのモジュールにすべての関数とサブを記述しました。

Option Explicit
Public ToDate As String  ' variable I use in many sub and functions
Public MyPath As String  ' variable I use in many sub and functions
Public NameOfWorker As Variant  ' constant I use in many sub and functions 
Public Salary As Double ' constant I use in many sub and functions   

NameOfWorker = Cells(14, 19)  ' !!! PB : 14 is highlighed with error : incorrect instruction outside a procedure
Salary = Cells(20, 7).Value  '!!! same as above

そのような定数/静的をどのように、どこで宣言する必要がありますか? これらすべての変数と定数を宣言する「特別な」手順を作成しますか? 私はそれらを宣言するために多くの方法を試みましたが、成功しませんでした。

Public Static NameOfWorker = Cells(14, 19) As String ' not working
''''''
Public Static nameOfWorker As String
NameOfWorker = Cells(14, 19)  ' not working
''' etc etc

ご協力ありがとう御座います。

編集:さらに読んだ後、この方法で1つの解決策を見つけました:

Public Const MY_PATH = "Y:\path\to\directory\"
Public Const WORKERNAME = "14, 19"

そんなに悪くない :-)

4

2 に答える 2

2

次のようなものと呼ばれる新しいモジュールを作成できますDataHelper

Private NameOfWorker As String
Private AgeOfWorker As Long
Private SetupComplete As Boolean

Public Function GetNameOfWorker()
    If NameOfWorker = "" Then
        NameOfWorker = Sheets("SomeSheet").Cells(14, 19)
    End If

    GetNameOfWorker = NameOfWorker
End Function

Public Function GetAgeOfWorker()
...
End Function

他のコードでは、値を取得できます。

Sub SomeMethod()    
    Cells(1, 1).Value = DataHelper.GetNameOfWorker()    
End Sub

...そして、設定されているかどうかを心配する必要はありません。

于 2013-10-28T13:41:02.027 に答える