下記のモジュールを実行すると、「このコレクションには項目がありません」というエラーが出るというヘルプメールがソース付きで来た。
Option Compare Database Option Explicit Dim BOOLAns As Boolean Public Function fromExcelAll() As Boolean On Error GoTo Err_fromExcelAll Dim RST As DAO.Recordset Dim openRST As String openRST = "SELECT T_試験名.T試験名 FROM T_試験名 ORDER BY T_試験名.試験CD;" Set RST = CurrentDb.OpenRecordset(openRST, dbOpenForwardOnly) Do Until RST.EOF BOOLAns = setfromExcel(RST!試験名) If BOOLAns = False Then GoTo Exit_fromExcelAll RST.MoveNext Loop RST.Close Exit_fromExcelAll: Set RST = Nothing Exit Function Err_fromExcelAll: MsgBox Err.Number & "/" & Err.Description, vbCritical Resume Exit_fromExcelAll End Function
行ったこと
- 文法チェック
- コンパイルエラーが出たので、"Option Explicit" を追加して修正した。
- 関数 fromExcelAll() を実行
- タイトルのエラーが出た。
- ブレークポイントを設定
- 最初のコマンド openRST 〜 にブレークポイントを設定した。
- デバッグのため、再度、関数 fromExcelAll() を実行
- [ステップイン]でデバックし、BOOLAns = setfromExcel(RST!試験名) に来たとたんエラーになることがわかった。
- "RST!試験名"があるか?
- openRST = "SELECT T_試験名.T試験名 FROM T_試験名 ORDER BY T_試験名.試験CD" の中に、"T試験名" はあるが、"試験名" は無い!
- "RST!試験名" → "RST!T試験名" に修正して実行 ‥‥ 成功!