Last Update: 2002/04/11
2001年11月
2930311234
567891011
12131415161718
19202122232425
262728293012

2001年11月13日

VB Tips。

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
ほーむ。 | いぬ。 | さる。 | きじ。 || まえ。 | こんげつ。 | つぎ。
ももたろ<info@momo-lab.net>