「CodeModule」オブジェクトの「Lines」プロパティを使って、各行のコードからプロシージャの変数の宣言行を取り出す際のポイントは次の2点です。
- コードが『Dim』が始まっている行を”変数の宣言行”と判定する
- Declarationsセクションにも『Dim』が使われている可能性があるので、Linesプロパティで各行のコードの取り出すループでは、”Declarationsセクションより下のコードだけ”(Declarationsセクションの行数+1以降)をチェック対象とする
プログラム
Sub SampleCode_42()
'プロシージャの変数の宣言行をリストアップする
Dim vbcmp As Object
Dim intRow As Integer
Dim strCode As String
'VBEのすべてのモジュールのループ
For Each vbcmp In VBE.ActiveVBProject.VBComponents
With vbcmp
'Declarationsセクションより下のすべてのコードを取り出すループ
For intRow = .CodeModule.CountOfDeclarationLines + 1 To .CodeModule.CountOfLines
strCode = .CodeModule.Lines(intRow, 1)
If LTrim(strCode) Like "Dim*" Then
'コードがDimで始まっていたらイミディエイトウィンドウに出力
Debug.Print .Name & "(" & intRow & "): " & strCode
End If
Next intRow
End With
Next vbcmp
End Sub
実行例
■実行後
|