|
▼Masa さん:
>ComboBoxの処理で検索をしましたら[68465]に以下の
>記述が見つかりました
見たことのあるコードですね(^^
>しかし、ここでCreateObjectが理解できないのです
"Scripting.Dictionary" (とか "Scripting.FileSystemObject" など)の
プログラム(コンポーネント)は、ExcelVBAから見ると
「外部ツール」ですよね?
「外部」ツールなので、何らかの方法で呼び出してオブジェクトを作成
してからでないと使えません。
外部ツールを呼び出すひとつの方法がCreateObject関数です。
Dim dic As Object 'オブジェクト変数の宣言
Set dic = CreateObject("Scripting.Dictionary")
' ↑"Scripting.Dictionary"のオブジェクトを一時的に作成し
これを変数dic にセットします。以後、Dictionaryの機能が
利用可能になります。
外部ツールを呼び出すもう一つの方法はあらかじめそのライブラリを
「参照設定」しておく方法です。Dictionaryクラスを例にとると
VBEメニュー[ツール]-[参照設定]から
Microsoft Scripting Runtime ライブラリにチェックを入れておきます。
すると、
Dim dic As Dictionary
Set dic = New Dictionary
のようにして、Dictionaryの機能(プロパティ、メソッド)が
プログラム内で利用可能になります。
> Set dic = CreateObject("Scripting.Dictionary")
のような呼び出し方は、プログラムが実行を始めてから(走り出してから)
外部プログラムを呼び出しているので、実行時バインディングと呼ばれてます。
対して
後者の「参照設定」の
> Set dic = New Dictionary
方法は、あらかじめプログラムにDictionaryオブジェクトを仕込んでおく
ので、事前バインディングと呼ばれます。
事前バインディングにより外部プログラムをセットしておくと、
コードを記述するとき、そのオブジェクトのプロパティやメソッドが
(dic. とピリオドを打つと)表示されます。また、あらかじめ仕込んで
あるので、実行時のパフォーマンスも(一般的に)向上します。
|
|