| 
    
     |  | こんにちは 
 >これ以上、なにを説明すればいいのかわかりませ。
 質問者が説明出来ない事を回答出来る人はいないと思いますよ。
 
 現在の「Worksheet_SelectionChange」の処理内容は理解されているのですか?
 
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 >選択されたセルの個数が「1」かつ選択されたセルの行番号が「16」以上なら処理
 >(注)セルの個数を「1」に限定しない場合、複数セル範囲の「Row」は選択された
 >   セル範囲の一番上のセルの行番号になります。
 If Target.Count = 1 And Target.Row > 16 Then
 >選択されたセルの列番号が「6」の時
 >(注)やはり複数セル範囲の場合は「Column」は選択されセル範囲の一番左のセル
 If Target.Column = 6 Then
 MsgBox ("OK")
 
 >ここからが実際の「Worksheet_SelectionChange」によるイベント処理
 >Worksheets("現場名").Range("C5:C304")というセル範囲の各セルの値で
 >選択されたセル(Target)の左隣のセルの値と同じものが有った時点で
 >現場名フォームを表示する。
 >つまりイベントが発生しても条件が満たされない場合は現場名フォームは表示されない。
 >また、選択されたセルの個数を「1」に限定しない場合は、
 >ActiveCellは、選択された複数セル(Target)のうちどこなのか不定です。
 >コードで「Range("D3,E7,D10:E10,G13,J14,D17:G36,J17:J36").Select」とした
 >場合 ActiveCellは「D3」になりますが、手作業の場合には一旦複数セルを選択
 >した後に TabキーでActiveCell を変更する事が出来てしまいます。
 >という訳で、もし複数セル範囲選択でイベント処理する時はそのセル範囲に
 >F6以下のセルが複数含まれていた場合にどのセルの値と「C.Value」を比較するのか
 >決めなければなりません。
 For Each C In Worksheets("現場名").Range("C5:C304")
 If C.Value = ActiveCell.Offset(0, -1).Value Then
 現場名フォーム.Show
 Exit Sub
 End If
 Next C
 End If
 End If
 End Sub
 
 
 |  |