-1 is the index of the header row and CellValueChanged events with RowIndex = -1 are raised when a Column's HeaderText property changes. You probably have no interest in these events and can ignore them by testing for RowIndex = -1 in the handler.
For example:
Private Sub dgv_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellValueChanged
If (e.RowIndex <> -1) Then
dgv(e.ColumnIndex, e.RowIndex).Value = dgv(e.ColumnIndex, e.RowIndex).Value.ToString().ToUpper()
End If
End Sub
It may be that the events occur during column configuration and so deferring attachment of the CellValueChanged event handler until after the columns have been fully configured may be a solution.
Alan.