| 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|
| 29 | 30 | 31 | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 1 | 2 |
VBでアドインを作成するとき、カレントプロシージャの位置を求める方法。
Private mVBInstance As VBIDE.VBE '有効な値が入ってると仮定
Private Sub GetCurrentProcedurePosition(ByRef StartLine As Long, ByRef EndLine As Long)
Dim CurrentLine As Long
Dim ProcName As String
Dim ProcKind As vbext_ProcKind
Dim ProcLineCount As Long
With mVBInstance.ActiveCodePane
' カーソル位置を取得
' ※ StartLine以外はいらないので 0 を渡す
Call .GetSelection(CurrentLine, 0, 0, 0)
' 指定行に定義されているプロシージャ名を取得
' ※ ProcOfLineの第二引数にはプロシージャの種類が入ってくる
ProcName = .CodeModule.ProcOfLine(CurrentLine, ProcKind)
' プロシージャの先頭行を取得
StartLine = .CodeModule.ProcStartLine(ProcName, ProcKind)
' プロシージャの行数を取得
ProcLineCount = .CodeModule.ProcCountLines(ProcName, ProcKind)
' プロシージャの最終行を求める
EndLine = StartLine + ProcLineCount - 1
End With
End Sub
このページにリンクを張りたい人はご自由にどうぞ。
疑問・感想・要望・不満・文句・愚痴等々ありましたら↓までメール下さいましm(_ _)m