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


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excelプロフェッショナルエンジニアテクニック Topics  >     (11) プロシジャの行数を調べる

 
(11) プロシジャの行数を調べる

 CodeModuleのProcCountLinesプロパティを用いると、プロシジャがモジュール内の何行を占めているか調べることができます。

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

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

 下記サンプルコードをModule1に記載して下さい。Module1中のプロシジャ"Proc2"がモジュール内の何行を占めているか調べる例です。
<Module1>

 1行目:  Option Explicit
 2行目:  
 3行目:  Public Sub Sample_ProcCountLines_01()
 4行目:  
 5行目:      ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 6行目:      ' 参照設定:
 7行目:      ' 「Microsoft Visual Basic for Application Extensibility」
 8行目:      ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 9行目:      
10行目:      ' このブックのVBProjectをオブジェクト変数に格納する。
11行目:      Dim Obj As VBIDE.VBProject
12行目:      Set Obj = ThisWorkbook.VBProject
13行目:  
14行目:      ' ProcCountLinesプロパティを用いて、"Proc2"のコードが何行あるか調べる。
15行目:      Dim rowCnt As Long
16行目:      rowCnt = Obj.VBComponents("Module1") _
17行目:          .CodeModule.ProcCountLines("Proc2", vbext_pk_Proc)
18行目:      MsgBox rowCnt
19行目:  
20行目:      ' オブジェクトを破棄する。
21行目:      Set Obj = Nothing
22行目:  
23行目:  End Sub
24行目:  
25行目:  ' *
26行目:  ' * Proc1 引数無し
27行目:  ' *
28行目:  Private Sub Proc1()
29行目:      MsgBox "I'm Private Sub Proc1"
30行目:  End Sub
31行目:  
32行目:  ' *
33行目:  ' * Proc2 引数無し
34行目:  ' *
35行目:  Private Sub Proc2()
36行目:      MsgBox "I'm Private Sub Proc2"
37行目:  End Sub
38行目:  
39行目:  ' *
40行目:  ' * Proc3 引数無し
41行目:  ' *
42行目:  Private Sub Proc3()
43行目:      MsgBox "I'm Private Sub Proc3"
44行目:  End Sub
 ここで利用しているのはCodeModuleのProcCountLinesプロパティです。
ProcCountLines(プロシジャ名, 種類){種類}で特定された{プロシジャ名}がモジュール内の何行を占めているかを返す。

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