これを実行したいのですが、コンパイルできません:
Public MyVariable as Integer = 123
これを達成する最善の方法は何ですか?
これを実行したいのですが、コンパイルできません:
Public MyVariable as Integer = 123
これを達成する最善の方法は何ですか?
.NET は私たちを台無しにしました :) あなたの宣言は VBA に対して有効ではありません。
アプリケーションのロード時に値を指定できるのは、定数のみです。次のように宣言します。
Public Const APOSTROPHE_KEYCODE = 222
これは、私の vba プロジェクトの 1 つからのサンプル宣言です。
パブリック変数を宣言し、その値を初期化したいものを探している場合は、 Workbook_Open サブを作成し、そこで初期化を行う必要があります。例:
Private Sub Workbook_Open()
Dim iAnswer As Integer
InitializeListSheetDataColumns_S
HideAllMonths_S
If sheetSetupInfo.Range("D6").Value = "Enter Facility Name" Then
iAnswer = MsgBox("It appears you have not yet set up this workbook. Would you like to do so now?", vbYesNo)
If iAnswer = vbYes Then
sheetSetupInfo.Activate
sheetSetupInfo.Range("D6").Select
Exit Sub
End If
End If
Application.Calculation = xlCalculationAutomatic
sheetGeneralInfo.Activate
Load frmInfoSheet
frmInfoSheet.Show
End Sub
Workbook オブジェクト自体でサブを宣言していることを確認してください。
別の角度を提供するために-
関数呼び出し間でパブリック変数を維持することはお勧めできません。使用する必要のある変数は、Subs と Functions に格納し、パラメーターとして渡す必要があります。コードの実行が完了したら、VBA プロジェクトが変数の値を維持することを期待しないでください。
この理由は、ワークブックの使用中に VBA プロジェクトを誤ってリセットする可能性があるものが多数あるためです。これが発生すると、パブリック変数はすべて 0 にリセットされます。
サブルーチンや関数の外部に値を保存する必要がある場合は、永続化する必要があるすべての情報に名前付き範囲を含む非表示のワークシートを使用することを強くお勧めします。
確かに知っていますが、それが定数の場合、const MyVariable as Integer = 123
そうでない場合は運が悪いです。変数には、別の場所で初期値を割り当てる必要があります。
あなたは出来る:
public property get myIntegerThing() as integer
myIntegerThing= 123
end property
クラスモジュールでグローバルに作成します。
public cMyStuff as new MyStuffClass
なので即納cMyStuff.myIntegerThing
可能です。
上記のように、グローバルにアクセス可能な変数を宣言するには、 public キーワードを前に付けた関数の外側で行うことができます。
また、影響はプロシージャの外では許可されていないため、たとえば、パブリック変数を初期化する InitGlobals というサブルーチンを作成し、ステートメントの先頭でこのサブルーチンを呼び出すだけです。
その例を次に示します。
Public Coordinates(3) as Double
Public Heat as double
Public Weight as double
Sub InitGlobals()
Coordinates(1)=10.5
Coordinates(2)=22.54
Coordinates(3)=-100.5
Heat=25.5
Weight=70
End Sub
Sub MyWorkSGoesHere()
Call InitGlobals
'Now you can do your work using your global variables initialized as you wanted them to be.
End Sub
一般宣言で変数を定義し、環境で発生する最初のイベントで初期化できます。
または、関連するプロパティを持つクラスを自分で作成し、Initialise メソッドで初期化することもできます
かなり時間が経ちましたが、これはあなたを満足させるかもしれません:
Public MyVariable as Integer: MyVariable = 123
変数名を再入力しなければならないので少し見にくいですが、1 行に収まっています。