|    | 
     こんな事なのかなぁ? 
 
Option Explicit 
 
Public Sub Sample() 
 
  Dim i As Long 
  Dim lngRows As Long 
  Dim lngTop As Long 
  Dim lngCount As Long 
  Dim rngList As Range 
  Dim vntData As Variant 
  Dim strProm As String 
   
  'Listの左上隅セル位置を基準として設定 
  Set rngList = ActiveSheet.Cells(5, "G") 
   
  '画面更新を停止 
  Application.ScreenUpdating = False 
   
  With rngList 
'    'データ行数を取得 ★データ行数が不定で行数を取得する場合 
'    lngRows = .Offset(Rows.Count - .Row).End(xlUp).Row - .Row + 1 
'    'データが無い場合 
'    If lngRows <= 1 And .Value = "" Then 
'      strProm = "データが有りません" 
'      GoTo Wayout 
'    End If 
    'データ行数を設定(G5〜G19) ★データ行数を予め指定する場合 
    lngRows = 15 
    'データを配列に取得 
    vntData = .Resize(lngRows + 1).Value 
    '番兵を設定 
    vntData(lngRows + 1, 1) = Empty 
    '範囲のフォントを初期化 
    .Resize(lngRows).Font.ColorIndex = 0 
    '同一セル値の先頭行初期値設定 
    lngTop = 1 
    '同一セル値のカウント初期値設定 
    lngCount = 1 
    'データ2行目〜最終行+1まで繰り返し 
    For i = 2 To lngRows + 1 
      '同一セル値先頭と現在行の値が違った場合 
      If vntData(lngTop, 1) <> vntData(i, 1) Then 
        '同一セル値先頭が""で無いなら 
        If vntData(lngTop, 1) <> "" Then 
          With .Offset(lngTop - 1) 
            '同一値が1超える場合 
            If lngCount > 1 Then 
              'FontColorをWhiteに 
              .Resize(lngCount - 1).Font.Color = vbWhite 
            End If 
            'FontColorをBlackに 
            .Offset(lngCount - 1).Font.Color = vbBlack 
          End With 
        End If 
        '同一セル値の先頭行を更新 
        lngTop = i 
        '同一セル値のカウント初期値設定 
        lngCount = 1 
      Else 
        '同一セル値のカウントを更新 
        lngCount = lngCount + 1 
      End If 
    Next i 
  End With 
   
  strProm = "処理が完了しました" 
   
Wayout: 
   
  '画面更新を再開 
  Application.ScreenUpdating = True 
   
  Set rngList = Nothing 
   
  MsgBox strProm, vbInformation 
   
End Sub 
 | 
     
    
   |