コメントありコードのチェック

'--------------------------------------------------
'プロシージャの概要:
'処理名:detectコメント部分
'概要:コード行にコメント部分が含まれるか判定
'strCode:判定対象のコード文字列
'戻り値:コメントが含まれる場合True
'--------------------------------------------------
Public Function detectコメント部分(ByVal strCode As String) As Boolean
    Dim binInString As Boolean
    Dim strChar As String
    Dim intI As Integer
    
    binInString = False
    
    'ダブルクオートで囲まれた文字列内かどうかを判定しながら解析
    For intI = 1 To Len(strCode)
        strChar = Mid(strCode, intI, 1)
        
        'ダブルクオートの処理
        If strChar = """" Then
            'エスケープされたダブルクオート("")かチェック
            If intI < Len(strCode) And Mid(strCode, intI + 1, 1) = """" Then
                intI = intI + 1 'エスケープされたダブルクオートをスキップ
            Else
                binInString = Not binInString '文字列リテラルの開始/終了を切り替え
            End If
        'シングルクオートの処理(文字列外の場合のみコメント開始と判定)
        ElseIf strChar = "'" And Not binInString Then
            detectコメント部分 = True
            Exit Function
        End If
    Next intI
    
    detectコメント部分 = False
End Function

'--------------------------------------------------
'プロシージャの概要:
'処理名:markコメント含有レコード
'概要:コメントを含むレコードにチェックを入れる
'--------------------------------------------------
Public Sub markコメント含有レコード()
    Dim dbsCurrent As DAO.Database
    Dim rsCode As DAO.Recordset
    Dim strSQL As String
    
    Set dbsCurrent = CurrentDb()
    
    '初期化:全てのフラグをFalseに設定
    strSQL = "UPDATE tCode SET [コード内コメントあり] = False"
    dbsCurrent.Execute strSQL
    
    'tCodeテーブルの全レコードを取得
    strSQL = "SELECT TrimCode, [コード内コメントあり] FROM tCode"
    Set rsCode = dbsCurrent.OpenRecordset(strSQL, dbOpenDynaset)
    
    '全レコードを処理
    With rsCode
        Do Until .EOF
            'コメントが含まれているかチェック
            If detectコメント部分(!TrimCode) Then
                .Edit
                ![コード内コメントあり] = True
                .Update
            End If
            .MoveNext
        Loop
        .Close
    End With
    
    Set rsCode = Nothing
    Set dbsCurrent = Nothing
End Sub