Potresti invertire il controllo dall'ultimo al primo.
Non ho provato, ma potrebbe essere un'alternativa.
codice:
 
       For X As Int32 = tblTot.Rows.Count To 0 Step  - 1
                If CInt(tblTot.Rows(X).Item("LANDA")) = 0 And _
                    CInt(tblTot.Rows(X).Item("SOLD")) = 0 And _
                    CInt(tblTot.Rows(X).Item("AVAIL")) = 0 And _
                    CInt(tblTot.Rows(X).Item("TSOLD")) = 0 And _
                    CInt(tblTot.Rows(X).Item("XSOLD")) = 0 And _
                    CInt(tblTot.Rows(X).Item("SGL")) = 0 And _
                    CInt(tblTot.Rows(X).Item("TRP")) = 0 And _
                    CInt(tblTot.Rows(X).Item("INDEP")) = 0 And _
                    CInt(tblTot.Rows(X).Item("GRDEP")) = 0 And _
                    CInt(tblTot.Rows(X).Item("INOPT")) = 0 And _
                    CInt(tblTot.Rows(X).Item("GROPT")) = 0 And _
                    CInt(tblTot.Rows(X).Item("TWINS")) = 0 And _
                    CInt(tblTot.Rows(X).Item("SFEMS")) = 0 And _
                    CInt(tblTot.Rows(X).Item("SMALS")) = 0 Then
                    tblTot.Rows(X).Delete()
                End If
        Next
Ciao,