>>510
Z列の"暫定"最大値を保持する変数を使います。
Dim r As Long, i As Long
Dim a As String, b As String, c As String
Dim Z_v As Long   '追加部分
Dim lsr As Long  '定義漏れですよ
lsr = 処理範囲の最終行をセット
Z_v = 0    ' Z列の最大値が負になりそうなら-9999999999などとしておく
For r = 5 to lsr
  If Cells(r, 3).Value = a And _
    Cells(r, 4).Value = b And _
    Cells(r, 5).Value Then
    If Cells(r, "Z").Value > Z_v Then  ' 暫定最大値を超えたら
      Z_v = Cells(r, "Z").Value     ' 暫定最大値を更新
      i = r                 ' 行位置も更新
    End If
  End If
Next

最大値となる行が複数あった場合は、最初の行位置が i の値となります。