Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excelプロフェッショナルエンジニアテクニック Topics  >     (15) プログラムのこの行はどのプロシジャのコード?

 
(15) プログラムのこの行はどのプロシジャのコード?

 例えば、プログラムの24行目がどのプロシジャのコードなのか?を調べる技を紹介します。

 Visual Baisc プロジェクトへのアクセスを許可します。

  「(04) Visual Baisc プロジェクトへのアクセスを許可する方法」

 下記サンプルコードは、プログラムの24行目がどのプロシジャのコードなのか調べるコードです。
<Module1>

 1行目:  Option Explicit
 2行目:  
 3行目:  Public Sub Sample_ProcOfLine_01()
 4行目:      
 5行目:      ' このブックのVBProjectをオブジェクト変数に格納する。
 6行目:      Dim Obj As VBIDE.VBProject
 7行目:      Set Obj = ThisWorkbook.VBProject
 8行目:  
 9行目:      ' ProcOfLineプロパティを用いて、24行目がどのプロシジャなのか調べる。
10行目:      Dim procName As String
11行目:      procName = Obj.VBComponents("Module1") _
12行目:          .CodeModule.ProcOfLine(24, vbext_pk_Proc)
13行目:      MsgBox procName
14行目:  
15行目:      ' オブジェクトを破棄する。
16行目:      Set Obj = Nothing
17行目:  
18行目:  End Sub
19行目:  
20行目:  ' *
21行目:  ' * Proc1 引数無し
22行目:  ' *
23行目:  Private Sub Proc1()
24行目:      MsgBox "I'm Private Sub Proc1"
25行目:  End Sub
26行目:  
27行目:  ' *
28行目:  ' * Proc2 引数無し
29行目:  ' *
30行目:  Private Sub Proc2()
31行目:      MsgBox "I'm Private Sub Proc2"
32行目:  End Sub
33行目:  
34行目:  ' *
35行目:  ' * Proc3 引数無し
36行目:  ' *
37行目:  Private Sub Proc3()
38行目:      MsgBox "I'm Private Sub Proc3"
39行目:  End Sub
 ここで利用しているのはProcOfLineプロパティです。指定した行がどのプロシジャに含まれているのか調べることができます。
ProcOfLineプロパティ種類}で特定されたプロシジャを対象に、{行番号}がどのプロシジャに含まれているのかを調べ、そのプロシジャ名を返す

 ProcOfLineプロパティの第二引数の種類には以下の四種類指定できます。
種類内容
vbext_pk_Getプロパティの値を取得するプロシジャを指定します。
vbext_pk_Letプロパティに値を設定するプロシジャを指定します。
vbext_pk_Setオブジェクトへの参照を設定するプロシジャを指定します。
vbext_pk_ProcProperty プロシジャ以外のすべてのプロシジャを指定します。
 このサンプルコードを実行します。以下のメッセージボックスが表示されます。
ページの先頭へ