作成日 2005/1/9
最終更新日 2005/10/22
オブジェクトブラウザにメソッドの説明文を載せる
Visual Basic 6.0の場合、[ツール]-[プロシージャ属性]で設定できるけど、VBAにはない。
どーするのか?
実はApplicationクラスのMacroOptionsメソッドを使うと出来る。(Excel Xだけかも2003はダメだった)
モジュールをエクスポートし、ファイルの中身を書き換えてインポートという方法もある。
VBEで[表示]-[オブジェクト ブラウザ]を選択するか、
以下のコマンドをイミディエイトウインドウとかで実行すると開くウインドウ。
Application.VBE.Windows("オブジェクト ブラウザ").Visible
=
True
で、クラス、メソッドやプロパティの定義情報の検索、表示が出来るとってもありがたい機能。
|
オブジェクトブラウザ
|
クラスモジュールClass1にあるaaaメソッドの説明文をオブジェクトブラウザに載せるには、以下のコマンドを実行すればいい。
※これはExcel Xの場合です。Excel
2003ではダメでした。(2003の場合、標準モジュールで定義してあるプロシージャしか出来ないみたい。)
Application.MacroOptions macro:="Class1.aaa",
Description:="あああ"
結果
|
MacroOptionsメソッドを使って、Class1のaaaメソッドに説明文を設定した結
果
|
どうやら、MacroOptionsメソッドのmacroっていう引数にクラスモジュールのメソッド名を指定するときは
クラス名.メソッド名
とすればいいみたい。(Excel 2003ではクラス名には標準モジュールの名前しか指定できないみたい。)
いろいろ、やってみたら、Public SubとPublic Functionプロシージャに対してにしかできかった。
まず、モジュールをエクポートする。(Mac版Excelを使っている人はここを参考にエクスポートして下さい。(別ウインドウが開きます))
そしたら、エクスポートしたファイルをテキストエディタ等で開く。
下の例の赤字の部分のように、プロシージャの宣言部の次の行にAttribute プロシージャ名.VB_Description="説明文"を書く。
VERSION 5.00
Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} UserForm1
Caption
= "UserForm1"
ClientHeight = 4800
ClientLeft = 0
ClientTop
= 0
ClientWidth = 6400
OleObjectBlob =
"UserForm1.frx":0000
StartUpPosition = 1 'CenterOwner
End
Attribute VB_Name = "UserForm1"
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'クリックした時の処理
Private Sub UserForm_Click()
Attribute
UserForm_Click.VB_Description =
"クリックした時の処理"
End Sub
'なんか
Private Property Get test() As Long
Attribute test.VB_Description =
"テスト\nテスト"
End Property
|
|
説明文の追加例 (\nは改行だよ)
|
最後に、インポートする。(Mac版Excelを使っている人は ここを参考にインポートして下さい。(別ウインドウが開きます))
説明文を取得するVBA標準のメソッドorプロパティってあるのかなぁ。
だるまは知らない。
誰か教えて。
このページの利用によって発生した、いかなる損害について、この
ホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方は
メールをお願いします。
Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft
Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。
このホームページの作成者はこれらの会社とはいっさい関係がありません。