41 | Declarationsセクションの変数の宣言行をリストアップする | ||
1つのモジュールのコードを「CodeModule」オブジェクトとして取り出し、「Lines」プロパティで各行のコードを取り出すループにおいて、上限をCountOfLinesプロパティではなく「CountOfDeclarationLines」プロパティの値とすることで、Declarationsセクションのコードだけを取り出すことができます(※注)。CountOfDeclarationLinesプロパティにはDeclarationsセクション内のコー ドの総行数が格納されています。 また、Linesプロパティで取り出した1行について、特定の文字列、ここでは変数の宣言を表す『Dim』、『Public』、『Private』のいずれかで始まっているかどうかを判定することで、変数の宣言行だけをリストアップすることができます。
プログラム
Sub SampleCode_41() 'Declarationsセクションの変数の宣言行をリストアップする Dim vbcmp As Object Dim intRow As Integer Dim strCode As String Dim avarSearch As Variant Dim iintLoop As Integer '変数の宣言行と判定する先頭文字列の配列を設定 avarSearch = Array("Dim", "Public", "Private") 'VBEのすべてのモジュールのループ For Each vbcmp In VBE.ActiveVBProject.VBComponents With vbcmp 'Declarationsセクション内のすべてのコードを取り出すループ For intRow = 1 To .CodeModule.CountOfDeclarationLines strCode = .CodeModule.Lines(intRow, 1) '1行のコード内から変数の宣言行かどうか判定するループ(配列を1つずつチェック) For iintLoop = 0 To UBound(avarSearch) If LTrim(strCode) Like avarSearch(iintLoop) & "*" Then 'コードが所定の先頭文字列で始まっていたらイミディエイトウィンドウに出力 Debug.Print .Name & "(" & intRow & "): " & strCode 'それ以上は配列の確認はせずに次の行へ Exit For End If Next iintLoop Next intRow End With Next vbcmp End Sub 実行例
■実行後 |
|||
|
Copyright © T'sWare All rights reserved |