45 テキストボックスのイベントプロシージャを削除する

特定のモジュールから一部のコードを削除するには、VBComponentの「CodeModule」オブジェクトの「DeleteLines」メソッドを使います。

このメソッドでは、1つめの引数に「削除する先頭の行番号」2つめに「削除する行数」を指定します。

引数の値によっては任意の箇所の任意の行数を削除できますが、イベントプロシージャのように削除対象のプロシージャ名が決まっている場合には、その2つの引数にそれぞれ次のプロパティを利用することができます。
いずれも1つめの引数に「プロシージャ名」、一般的なSub/Functionプロシージャであれば2つめの引数には固定で「0」を指定することで、各値を取得できます。
  • プロシージャの先頭行番号ProcStartLine
  • プロシージャの行数ProcCountLines
プログラム

Sub SampleCode_45()
'テキストボックスのイベントプロシージャを削除する

  Dim vbcmp As Object
  Dim intStartRow As Integer
  Dim intDelRows As Integer
  '削除するプロシージャ名
  Const cstrDelProcName = "テキスト1_AfterUpdate"

  'フォーム2のモジュールを開く
  Set vbcmp = VBE.ActiveVBProject.VBComponents("Form_フォーム2")
  With vbcmp.CodeModule
    '削除するプロシージャの先頭行番号を取得
    intStartRow = .ProcStartLine(cstrDelProcName, 0)
    '削除するプロシージャの行数を取得
    intDelRows = .ProcCountLines(cstrDelProcName, 0)
    '先頭行から行数分を削除
    .DeleteLines intStartRow, intDelRows
  End With

End Sub

実行例
■実行前

■実行後
| Index | Prev | Next |



Copyright © T'sWare All rights reserved