Как уже говорили другие, вы можете уйти с формулой рабочего листа. Но если VBA необходимо, ну ... в любом случае используйте формулу рабочего листа:
Дайте попробовать:
Sub findHighestNo()
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("Sheet1")
Dim lRow As Long
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Dim max_rng As Range
Set max_rng = ws.Range("B1:B" & lRow)
Dim cliente: cliente = InputBox("Select your cliente ID")
Dim Result
' If IsNumeric(cliente) Then
'
' Result = WorksheetFunction.MaxIfs(max_rng, max_rng.Offset(, -1), cliente)
' MsgBox Result, vbInformation, "Max result"
' Else
' MsgBox "Input a number instead!"
' End If
Dim arrData As Variant
arrData = max_rng.Offset(, -1).Resize(, 2)
Dim arrTmp() As Long: ReDim arrTmp(1 To lRow)
If IsNumeric(cliente) Then
Dim R As Long
For R = LBound(arrData) To UBound(arrData)
If arrData(R, 1) = CLng(cliente) Then
arrTmp(R) = arrData(R, 2)
End If
Next R
Result = WorksheetFunction.Max(arrTmp)
MsgBox Result, vbInformation, "Max result"
Else
MsgBox "Input a number instead!"
End If
End Sub
РЕДАКТИРОВАТЬ: Добавлена альтернатива для получения MAX
, так как MAXIFS
доступен только в Office 365/2019 .