| 
    
     |  | ▼yayoi さん: 相変わらず、エラー処理はしていません。
 
 Sheet2に
 B 田中 C 近藤 X 松田
 B 伊藤
 B 齊藤
 
 てな感じで、A1から入力されているとして、
 列位置を入力した場合は、必ず名前を入力してください。
 空白を希望なら、スペースを入力してください。
 列番は、アルファベットで、必ず順番に並べて入力してください。
 OnTimeは使っていないので、下記コードは、Sheet1にコピーしてください。
 セルの選択の変更で処理されます。
 ウィンドウの固定をA列でしといてね。
 
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim rg As Variant
 Dim Clm As Long
 Dim i As Long
 Dim j As Long
 Dim ChangeClm As Long
 
 rg = ThisWorkbook.Worksheets("Sheet2").Range("A1").CurrentRegion.Value
 Clm = ThisWorkbook.Windows(1).Panes(2).VisibleRange.Cells(1).Column
 
 Application.ScreenUpdating = False
 
 For i = LBound(rg, 1) To UBound(rg, 1)
 For j = LBound(rg, 2) To UBound(rg, 2) Step 2
 If rg(i, j) <> "" Then
 ChangeClm = Range(rg(i, j) & 1).Column
 If ChangeClm <= Clm Then
 Range("A" & i) = rg(i, j + 1)
 Else
 Exit For
 End If
 End If
 Next j
 Next i
 
 Application.ScreenUpdating = True
 End Sub
 
 |  |