Calling Worksheetfunction.Max() does not change the ActiveCell, it simply returns the highest value in an array. Before suggesting an alternative approach, please can you tell us what you would want the message to be if the highest profit corresponds to more than one year? eg
Do Until ActiveCell.Value = varMax
MsgBox "The max profit is: " & varMax & " it happens in year" & ActiveCell.Offset(0, -1).Value
A few tips:
Notice that you don't need to "Dim as" when you declare your variables
You store the MAX value in a variable. Notice that I use addresses as arguments for WorksheetFunction.Max. IT makes the code easier to read. Named fields and variables are cool but they tend to make the code obscure.
Agreeing with Colin you need to select the cell containing the max and the year is in the cell on the left: Activecell.Offset(0,-1).value.
Offset is the VBA word that you will use the most. Learn all about it and also about CurrentRegion in my tutorial at