| 
    
     |  | Sub 確認() Dim LastRow As Integer
 Dim sPhere As Variant
 Dim i    As Long
 Dim x    As Variant 'String型ではErrorを受けきれない。
 Dim rNbroW(1 To 10) As Long 'String '行数なのでLongが素直かな?
 
 LastRow = Cells(Rows.Count, 5).End(xlUp).Row 'ActiveSheet.は不要
 'If LastRow < 5 Then Exit Sub
 sPhere = Range("X4:X" & LastRow)
 With Application
 For i = 1 To 10
 x = .Match(.Max(sPhere), sPhere, 0)
 If Not IsError(x) Then
 rNbroW(i) = x + 3
 Cells(x + 3, 24).Select
 MsgBox x + 3 & "が" & i & "番目に大きい行です"
 sPhere(x, 1) = Empty  'Range("X4:X" & LastRow)から消しちゃう?
 End If
 Next i
 End With
 End Sub
 
 Rows.CountはApplicationのRows.Countで、BookやSheetによって変わるわけではありませんから、
 ActiveSheet.は不要ですね。
 
 >Range("X4:X" & LastRow)から消しちゃう?
 の?については、
 Range("X4:X" & LastRow)の値を格納した配列sPhereから消します。
 『消す』というか、元の値をEmptyにしちゃうわけです。
 Max(sPhere)で既に使った値だから次のMax(sPhere)で邪魔になりますね?
 
 VBAの理解にとても役立つツールとして、[ローカルウィンドウ]があります。
 ://excelvba.pc-users.net/fol8/8_2.html
 ワンステップずつ実行しながら、変数の 値 や 型 を確認すると理解が深まりますよ。
 
 
 |  |