Your loop should work backwards through the grid. Instead of
With MSHFlexGrid1
For RecNo = 1 To .rows - 1
use
With MSHFlexGrid1
For .rows - 1 to 1 Step -1
You might also want to consider if you are processing all of the rows in the grid.
The following tries to explain why you need to go backwards...
Imagine you have these rows
Row Number Content Notes
1 aaaaaa Original Row 1
2 bbbbbb Original Row 2
3 cccccc Original Row 3
4 dddddd Original Row 4
If we delete the first row this is what happens (Hint - look at the Row Numbers)
Row Number Content Notes
1 bbbbbb Original Row 2
2 cccccc Original Row 3
3 dddddd Original Row 4
Delete (what is now) Row 2 now
Row Number Content Notes
1 bbbbbb Original Row 2
2 dddddd Original Row 4
So you thought you were going to delete "aaaaaa" and "bbbbbb" but instead deleted "aaaaaa" and "cccccc".
If you work backwards instead, still trying to delete "aaaaaa" and "bbbbbb" step 1 ends up like this
Row Number Content Notes
1 aaaaaa Original Row 1
2 cccccc Original Row 3
3 dddddd Original Row 4
I.e. Original Row 2 is deleted, the subsequent rows (that we are not interested in) move up in rank but Row 1 stays exactly where it was at the start of the loop.