Our grid uses smooth pixel scrolling, and the Value properties of our scroll bar objects return the number of pixels the grid has been scrolled by. That's why VScrollBar.Value can be much greater than your row numbers.
If you know the height of every row in your grid, you could calculate the desired VScrollBar.Value, but there is a much better way - see the EnsureVisibleRow method.