2016-11-15 1 views
0

Commencez par faire une programmation sur VB.net et vous verrez un petit problème. J'essaie de trouver un moyen d'avoir un contrôle d'instruction If si une boucle for s'exécute ou non avant de passer par une autre itération.Condition de poursuite d'une boucle For

code:

For Each theTable In tableDoc.Tables 
     testString = "" 
     For row = 1 To theTable.Rows.Count 
      isHeaderOrNot = theTable.Cell(row, 1).Range.Text 'Gets value in first column 
      If isHeaderOrNot is Not Like "Section" or "Field" then Continue For 'if the words "Section" or "Field" are NOT included in isHeaderOrNot then continue with For loop 
      keyText = theTable.Cell(row, 2).Range.Text 
      valueText = theTable.Cell(row, 3).Range.Text 
      Console.WriteLine("KEY: {0}", keyText) 
      Console.WriteLine("VALUE: {0}", valueText) 
      Console.WriteLine("") 
     Next 
    Next 

Je reçois une erreur sur Like en disant il y a une expression attendue ..

En gros, si la première colonne de la ligne la boucle est dans la section contient ou champ I Je veux aller à la ligne suivante. Première fois en essayant d'expliquer une question traitant de cela, alors toutes les questions demandent! J'apprécie vraiment votre temps!

+1

Vous avez besoin: 'Si isHeaderOrNot est pas comme "Section" et isHeaderOrNot est pas comme "Champ"' (notez le '' et' pas or' à exclure les deux) - peut également utiliser '<>' plutôt que 'like' car vous n'avez pas de caractères génériques. –

+0

Bonne suggestion et merci pour votre temps !, mais je reçois toujours une erreur sur le premier "Like" dans votre code. @AlexK. – Bob

+1

Quelle est cette chose? Exceller? 'theTable.Cell (row, 1)' Les datatables n'ont pas de cellules – Plutonix

Répondre

1

Vous pouvez simplement inclure le bloc entier dans le if, et si ce n'est pas le cas et que vous voulez terminer la boucle, vous pouvez utiliser Exit For.

For Each theTable In tableDoc.Tables 
    testString = "" 
    For row = 1 To theTable.Rows.Count 
     isHeaderOrNot = theTable.Cell(row, 1).Range.Text 

     'If cell doesn't contain Section or Field, then do the following 
     If Not isHeaderOrNot.contains("Section") AndAlso Not isHeaderOrNot.contains("Field") 
      keyText = theTable.Cell(row, 2).Range.Text 
      valueText = theTable.Cell(row, 3).Range.Text 
      Console.WriteLine("KEY: {0}", keyText) 
      Console.WriteLine("VALUE: {0}", valueText) 
      Console.WriteLine("") 
     Else 

      'If it DOES include Section or Field, then stop looping 
      Exit For 
     End If 
    Next 
Next 
1

La syntaxe correcte doit être

If Not isHeaderOrNot Like "Section" AndAlso 
    Not isHeaderOrNot Like "Field" Then 
    Exit For