2016-11-15 138 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