| 
    
     |  | まず、 
 intN = "Me.txt_BOX_'" & N & ".value'"
 
 のコードでエラーになりますね。
 
 "Me.txt_BOX_'" & N & ".value'" は、"Me.txt_BOX_2.value" というような文字列になりますが、それを数値型の変数に代入はできませんので。
 コントロールの名称(文字列)でコントロールの値を参照すには、下記のような式になります。
 
 Me.Controls("txt_BOX_1").Value
 
 あるいは、Controls は規定のプロパティなので省略することもできます。
 
 Me("txt_BOX_1").Value
 
 次に、入力チェックするときのイベントは、更新後処理ではなく更新前処理の方がいいです。条件違反のときは、イベントをキャンセルすれば他のコントロールに移動しません。
 
 自分以外のテキストボックスの重複値をチェックするという処理は共通なので、共通で使える関数を作成して、それを書くテキストボックスに関連付けるのがいいでしう。
 
 フォームモジュールに下記の関数を作成します。
 
 Private Function TyoufukuCheck()
 Dim i As Integer
 Dim N As Integer
 Dim V As Integer
 Dim ctl As Control
 
 For i = 1 To 5
 Me("txt_BOX_" & i).BackColor = vbWhite '背景色を初期化
 Next
 
 Set ctl = Me.ActiveControl '自分自身のコントロール
 If IsNull(ctl.Value) Then Exit Function '未入力なら何もしない
 N = Val(Mid(ctl.Name, 9)) '自分自身の番号
 V = ctl.Value
 For i = 1 To 20
 If i = N Then
 ElseIf V = Me("txt_BOX_" & i).Value Then
 Me("txt_BOX_" & i).BackColor = 8421631 '背景色を赤
 MsgBox "部品コードが重複しています!", vbCritical, "警告"
 ctl.SelStart = 0: ctl.SelLength = 255 '入力文字列を全選択
 DoCmd.CancelEvent       'イベントをキャンセル
 Exit For
 End If
 Next
 
 End Function
 
 フォームのデザインビューで部品コード入力用のテキストボックスをすべて選択した状態で、
 プロパティの「更新前処理」欄に下記のように設定します。
 
 =TyoufukuCheck()
 
 これで重複した部品コードを入力した場合は、それを修正するまでテキストボックスから抜け出せません。
 
 
 なお、部品コードは数値型との前提です。また、数値以外を入力した場合のチェックも追加したほうがいいでしょう。
 
 |  |