トレーニング
モジュール
Dynamics 365 Business Central でイベントを使用して機能を拡張する - Training
Microsoft Dynamics 365 Business Central で既存の機能にビジネス ロジックを追加する方法について知りたいですか? このモジュールでは、コードの使用およびイベントの処理方法について説明します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
ユーザー定義イベントを宣言します。
[ パブリック ] イベントプロシージャ名 [ (arglist) ]
Event ステートメントには、次の指定項目があります。
指定項目 | 説明 |
---|---|
Public | 省略可能。 プロジェクト全体でイベントが表示されるように指定します。 Events 型は既定で Public です。 イベントは、それが宣言されている モジュール内でのみ生成できることに注意してください。 |
procedurename | 必須です。 イベントの名前。は、標準変数の名前付け規則に従います。 |
arglist 引数の構文と指定項目は次のとおりです。
[ ByVal | ByRef ] varname [ ( ) ] [ Astype ]
指定項目 | 説明 |
---|---|
ByVal | 省略可能。 引数が値で渡されることを示します。 |
ByRef | 省略可能。 参照渡しで引数が渡されることを示します。 ByRef は、Visual Basic .NET とは異なり、VBA の既定値です。 |
varname | 必須です。 プロシージャに渡される引数を表す変数の名前。は、標準変数の名前付け規則に従います。 |
type | 省略可能。 プロシージャに渡される引数のデータ型。は、Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal (現在サポートされていません)、Date、String (可変長のみ)、Object、Variant、ユーザー定義型、またはオブジェクト型のいずれかです。 |
イベントが宣言されたら、 RaiseEvent ステートメントを使用してイベントを発生させます。 Event の宣言が 標準モジュール内にあると、構文エラーが発生します。 値を返すようにイベントを宣言することはできません。 次のフラグメントに示すように、一般的なイベントが宣言され、発生する可能性があります。
' Declare an event at module level of a class module
Event LogonCompleted (UserName as String)
Sub
RaiseEvent LogonCompleted("AntoineJan")
End Sub
注意
イベント引数は、プロシージャの引数と同様に宣言できます。イベントには名前付き引数、 省略可能 な引数、 または ParamArray 引数を指定することはできません。 イベントには戻り値がありません。
次の例では、イベントを使用して、最速の 100 メートル走のデモ中にイベントを使用してタイムをカウントします。 コードでは、イベントに関係するすべてのメソッド、プロシージャ、ステートメント (Event ステートメントを含みます) が示されています。
イベントを発生させるクラスはイベント ソース、イベントを実装するクラスはシンクです。 イベント ソースには、生成されたイベントに対して複数のシンクを指定できます。 クラスがイベントを発生させると、そのイベントはすべてのクラス (オブジェクトのインスタンスに対してイベントをシンクするために選択したクラス) で開始されます。
また、この例では、ボタン (Command1
)、ラベル (Label1
)、および 2 つのテキスト ボックス (Text1
と Text2
) を含むフォーム (Form1
) を使用しています。 ボタンをクリックすると、1 番目のテキスト ボックスに "From Now" と表示され、2 番目のテキスト ボックスで秒数のカウントが始まります。 フルタイム (9.84 秒) が経過すると、最初のテキスト ボックスに "Until Now" が表示され、2 番目のテキスト ボックスに "9.84" と表示されます。
コードでは、フォームの初期状態と最終状態を指定しています。 また、イベントの発生時に実行されるコードも含まれます。
Option Explicit
Private WithEvents mText As TimerState
Private Sub Command1_Click()
Text1.Text = "From Now"
Text1.Refresh
Text2.Text = "0"
Text2.Refresh
Call mText.TimerTask(9.84)
End Sub
Private Sub Form_Load()
Command1.Caption = "Click to Start Timer"
Text1.Text = ""
Text2.Text = ""
Label1.Caption = "The fastest 100 meter run took this long:"
Set mText = New TimerState
End Sub
Private Sub mText_ChangeText()
Text1.Text = "Until Now"
Text2.Text = "9.84"
End Sub
Private Sub mText_UpdateTime(ByVal dblJump As Double)
Text2.Text = Str(Format(dblJump, "0"))
DoEvents
End Sub
残りのコードは TimerState という名前のクラス モジュールにあります。 Event ステートメントではイベントが発生すると開始されるプロシージャが宣言されています。
Option Explicit
Public Event UpdateTime(ByVal dblJump As Double)
Public Event ChangeText()
Public Sub TimerTask(ByVal Duration As Double)
Dim dblStart As Double
Dim dblSecond As Double
Dim dblSoFar As Double
dblStart = Timer
dblSoFar = dblStart
Do While Timer < dblStart + Duration
If Timer - dblSoFar >= 1 Then
dblSoFar = dblSoFar + 1
RaiseEvent UpdateTime(Timer - dblStart)
End If
Loop
RaiseEvent ChangeText
End Sub
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。
トレーニング
モジュール
Dynamics 365 Business Central でイベントを使用して機能を拡張する - Training
Microsoft Dynamics 365 Business Central で既存の機能にビジネス ロジックを追加する方法について知りたいですか? このモジュールでは、コードの使用およびイベントの処理方法について説明します。
ドキュメント
Office VBA 言語リファレンス
Excel でアプリケーション レベルのイベント ハンドラーを作成する - Microsoft 365 Apps
Excel でアプリケーション レベルのイベント ハンドラーを作成する方法について説明します。
オブジェクト、メソッド、プロパティ、およびイベントについて (VBA)
Office VBA リファレンス トピック