AcesssVBAやExcelVBAでエラーが出たとき、どの行でエラーが出ているかをある程度知る方法(AcesssVBAとExcelVBAでは、少しコードが異なります。Wordでもそうなのかも?)

  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
  

このコードは、「必ず」「新しいmdbかaccdbファイル」にて、実行してください。
既存のファイルでやると、本コードは不完全なので、そのファイルを破壊する可能性が高いです。
ご注意ください。
(完璧に付加の分岐をするのは無理か、かなり面倒な気がします。
  正規表現とかが得意な人ならできるのかも?
  また、バージョンによって?なのかわかりませんが、オプション設定にて、
  ファイル
  →オプション
  →トラストセンター
  →トラストセンターの設定
  →マクロの設定
  にて、
  「すべてのマクロを有効にする」
  にしてOKしておかないと動かないかもしれません。
  Excelのような設定は不要かも?です。
  当方の365のAccessでは、そこにExcelのような設定項目が無かったので
  そのまま何もせずとも動いてしまったのですが・・・。)

  

●Access用

  

「必ず」「新しいmdbかaccdbファイル」にて、
上記と以下のコードを標準モジュールに貼り付けてから、上記コードを実行します。

そうすると、上記と以下のコードの両方に、「行番号」が「あらかた」付加されます。

で、以下のコードでわざとエラーを起こして試してみます。
イミディエイトウィンドウに、
「Error 6: オーバーフローしました。 in Module1, Line 11」
みたいな感じで、エラーの起こった行番号が表示されます。

これを、イミディエイト表示をやめて、
「エラーログなどに追加すればOK」、、、みたいな感じです。

まお、繰り返しますが、
既存のファイルでやると、上記コードは不完全なので、そのファイルを破壊する可能性が高いです。
本当にご注意ください。

  

行番号を振ってもイミディエイトに

「・・・・Line 0」

と出てしまう場合は、

Dim aaaa As Integer

aaaa = 50000
のあいだに、
コメントとか、空白行?、何かのコードを適当に挟むと

・・・・Line ××

と行番号が表示されるかもしれません。

なお、エラーが出ている行の、直前の行の番号が表示されてしまうこともあるようで、正常に動かないかもしれません。

ExcelでもExcel用に書きかえて試してみましたが、
同じように少し挙動がおかしかったです。

「カンペキはできない」のかもしれません。

まあでも、それでも、「だいたいの目星」は付けられます。

なお、行番号は、「実際の行番号ではなくて」「付加した数字」が表示されます。

なので、この本プログラムを使わずに、
「気になるプロシージャ」の「気になる行」の先頭に
「適当な数字」を「手動でつける」だけでも、
どの行(or どの行付近)でエラーになったかを知ることができます。

  

  

以下は、Excel版です。
オプション設定は今のところ、必ず必要だと思います。
Acessと設定内容が少し異なります。
  オプション設定の、
  「トラストセンターの設定」→「マクロの設定」にて、
  「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」、
  にチェックマークを入れてOKします。

イミディエイトで試すコードは、上記の短いコードと同じです。