CoCoのYDブログ

心に思い浮かんだことを少し掘り下げ発信します

【VBA】Declare ステートメントってなに?

こんにちは

今回は自分が疑問に思ったものです。

 

少し複雑な処理を考えていたところ、Sub Functionの前にDeclare Function ~という記載がありました。Declare Functionについて全く知らないため少し調べてみようとおもいます。

 Declare Function(Declareステートメント)とも呼ぶらしいですね。

Declare ステートメントってなに?

外部ファイル内で実装されているプロシージャへの参照を宣言します。

引用元-Microsoft

  流石Microsoftさん、つまり外部のプロシージャに引数を送って処理を行っているわけですね。そしてDeclareステートメントはこれらを使いますよという宣言みたいなものですかね(よく分かってない)

 

Declare ステートメントを使うには

シートモジュールではなく、標準モジュールに記載しないとならない様子です。理由を調べたのですが分かりやすく書いていなかったり、記載されていないことが多かったため探すのを断念!

というわけで標準モジュールを追加してみましょう。

1.VBEの[挿入]から[標準モジュール]をクリック

f:id:takataka2743:20180828214517j:plain

2.左に追加されたModule1をダブルクリック

f:id:takataka2743:20180828214708j:plain

ためしに実行してみる

 試しに以下のプログラムを追加したMuduleに入力して実行してみましょう

※音が鳴るのでPCの音量を下げてから実行してください

Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _
(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Sub Macro2()
  Call BeepAPI(300, 500)
  Call BeepAPI(800, 1000)
End Sub

 

どうでしょう、音は鳴りましたか?

こうやってDeclare Functionを実行するんですね、ひとつ勉強になりました。