2016-11-15 139 views
0

首先在VB.net中进行编程并遇到一个小问题。我试图找到一种方法来让If语句控制在执行另一次迭代之前for循环是否执行。继续进行For循环的条件

代码:

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 

我得到的Like说有预期的表达式错误..

基本上,如果该行的第一列中的for循环中包含部分或现场我希望它进入下一行。第一次试图解释这个问题,所以任何问题只是问!我真的很感激你的时间!

+1

您需要:'如果isHeaderOrNot是不喜欢“节”和isHeaderOrNot并不像“田”'(注意'和''不给或'排除两者) - 也可以使用''''而不是'''因为你没有通配符。 –

+0

好的建议和感谢您的时间!,但我仍然收到代码中第一个“赞”的错误。 @AlexK。 – Bob

+1

这是什么东西? Excel中? 'theTable.Cell(row,1)'datatables dont have cells – Plutonix

回答

1

您可以将整个块包含在if中,如果不是这种情况并且您想要结束循环,则可以使用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

正确的语法应该是

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