まりふのひと

「このコレクションには項目がありません」のエラーが出る

下記のモジュールを実行すると、「このコレクションには項目がありません」というエラーが出るというヘルプメールがソース付きで来た。

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

行ったこと

  1. 文法チェック
    • コンパイルエラーが出たので、"Option Explicit" を追加して修正した。
  2. 関数 fromExcelAll() を実行
    • タイトルのエラーが出た。
  3. ブレークポイントを設定
  4. デバッグのため、再度、関数 fromExcelAll() を実行
    • [ステップイン]でデバックし、BOOLAns = setfromExcel(RST!試験名) に来たとたんエラーになることがわかった。
  5. "RST!試験名"があるか?
    • openRST = "SELECT T_試験名.T試験名 FROM T_試験名 ORDER BY T_試験名.試験CD" の中に、"T試験名" はあるが、"試験名" は無い!
  6. "RST!試験名" → "RST!T試験名" に修正して実行 ‥‥ 成功!