Mediante el código descrito a continuación es posible recorrer todas las filas de una grid y operar con sus contenidos para, opcionalmente, actualizar la grid con los resultados de nuestra operación.
Habrá que manipular el objeto ArrayDB del grid.


Código VB6:

Set lgrd = gForm.Controls("nombreGrid")
' Nos traemos el array a una variable para operar más fácilmente
Set lArr = lgrd.ArrayDb
Dim i
For i = lArr.Lowerbound (1) To lArr.UpperBound(1)
     ...
Next

'Opcional: actualizamos la grid. Si no lo hacemos, nuestras operaciones habrán sido solo de consulta.
Set lgrd.ArrayDb = lArr
lgrd.Grid.Rebind

Sub marcar (aMarca)
     Set lgrd = gForm.Controls("Pers_GrdCartera")
     Set lArr = lgrd.ArrayDb
     Dim i
     For i = lArr.Lowerbound (1) To lArr.UpperBound(1)
         lArr (i,lgrd.colindex("P_Marca")) = aMarca
     Next
     Set lgrd.ArrayDb = lArr
     lgrd.Grid.Rebind
End Sub


Código C#:

ICntGridUsuario lGrd = (ICntGridUsuario)gForm.Controls["NombreGrid"];
IXArrayDB lArr = lGrd.ArrayDb;

for (int i = lArr.LowerBound(1); i <= lArr.UpperBound(1); i++)
{
    // ...
}

// Opcional; actualizamos la grid. Si no lo hacemos nuestras operaciones habrán sido únicamente de consulta
lGrd.ArrayDb = lArr;
lGrd.ReBind();

private void Marcar(bool aMarca)
{
    ICntGridUsuario lGrd = (ICntGridUsuario)gForm.Controls["Pers_GrdCartera"];
    IXArrayDB lArr = lGrd.ArrayDb;
    for (int i = lArr.LowerBound(1); i <= lArr.UpperBound(1); i++)
    {
        // ...
    }
    lGrd.ArrayDb = lArr;
    lGrd.ReBind();
}