|
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
ワンステップずつ実行しながら、変数の 値 や 型 を確認すると理解が深まりますよ。
|
|