The point I was making in showing you the last piece of code, was that you can specify a matrix [........] of values (rows) that you can use to select the rows you want. There are a multitude of ways to populate a matrix. The capabilites of populating matricies are listed in
Help==Books==>Scripting Guide
Given your current code, I would probably use an Index() function. It would make the code far more efficient. Also, using Wait(0); will force the processing to finish the selection before moving on, rather than having to guess on how much time you need to wait.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
L = N Rows( dt ); // number of rows
//For( i = 3, i <= L, i++,
dt << Select Rows( Index( 3, L ) );
dt << Go To( :Height );
//);
Wait( 0 );
dt << Select Matching Cells();
Jim