Setting the SelectionMode property of the MSFlexGrid to flexSelectionByRow forces all columns in a row to be selected rather than a single cell. It also allows selection of multiple rows simultaneously. To force a single row selection for a grid, I have a function called UpdateGrid that ensures only one row is selected, regardless of a drag on the rows or if the Shift and the Up and Down arrow keys are used. This is useful if you want to present a list of items in a grid format and only want one highlighted:
Sub UpdateGrid(grdInput As MSFlexGrid) If grdInput.Rows = (grdInput.FixedRows + 1) Then ' only one row in the grid and it ' it a fixed one: don't do anything Exit Sub Else ' more than one row in the grid If grdInput.RowSel <> grdInput.Row Then ' user selected a different row in the grid ' than the current row: ' set it to the highlighted row grdInput.RowSel = grdInput.Row End If End IfEnd Sub
In the SelChange event for a grid, put in this code:
Private Sub myGrid_SelChange UpdateGrid myGridEnd Sub