2015-12-28 36 views
0

好了,所以我一直在編寫一個程序,並且由於某種原因,當我將一些代碼放入else語句時,它不會運行statemant,甚至不會運行原始如果語句,但是當我把它放在一個普通的If和else語句中時,它完美地工作。ElseIf語句不會運行整個代碼VB

這段代碼的工作原理:

If TextBox5.Text > TextBox1.Text & TextBox6.Text > TextBox2.Text Then 'NE 
     Bearing = Atan(X2/Y2) * 57.3 
    Else 
     Bearing = Atan(Y2/X2) * 57.3 
     Bearing = Bearing + -Bearing + -Bearing + 90 
     If BOFF > 0 Then 
      Bearing = Bearing - Math.Round(BOFF) 
     Else 
      Bearing = Bearing + Math.Round(BOFF) 


     End If 


    End If 

而這段代碼不工作:

If TextBox5.Text > TextBox1.Text & TextBox6.Text > TextBox2.Text Then 'NE 
     Bearing = Atan(X2/Y2) * 57.3 
    ElseIf TextBox5.Text > TextBox1.Text & TextBox6.Text < TextBox2.Text Then 
     Bearing = Atan(Y2/X2) * 57.3 
     Bearing = Bearing + -Bearing + -Bearing + 90 
     If BOFF > 0 Then 
      Bearing = Bearing - Math.Round(BOFF) 
     Else 
      Bearing = Bearing + Math.Round(BOFF) 


     End If 


    End If 

可能是一個語法錯誤的東西,但它不拿出一個錯誤可言,完美運行代碼以及所有這些。我不知道我在這裏做錯了什麼。

+0

在工作代碼中,if條件未滿足,因此它將輸入else語句。在非工作代碼中,既不滿足if條件,也不滿足else條件,因此不執行代碼。我確信在你身邊增加一些調試工作將會解決這個問題。通常我會在條件中添加一些括號/括號來分隔條件。 – Karlta05

+0

你想要實現什麼?只是解釋你的要求.... –

+0

@wingedpanther好吧,所以基本上,它有不同的方向計算,這些只是其中2,其中2需要添加,所以我需要總共3 elseif語句,但不只是1,但這是代碼不起作用的展示。因此,總結一下,程序掃描的方向不同,然後設置計算優先級並計算它們,但看起來如果分解代碼並且沒有任何效果。 – MattJ

回答

1

您應該使用的AND代替&

AND是另一方面&邏輯運算符是用於連接字符串

這是合乎邏輯的,以及按位與運算符。如果兩個 操作數均爲true,則條件成立。該運算符不執行短路,即它評估兩個表達式。

If TextBox5.Text > TextBox1.Text And TextBox6.Text > TextBox2.Text Then 'NE 
     'Code 
ElseIf TextBox5.Text > TextBox1.Text And TextBox6.Text < TextBox2.Text Then 
     'Code 
End If 

注:

如果TextBox1.Text =4值,然後TextBox6.Text=1TextBox1.Text & TextBox6.Text產量41

看到這個demo

&用於連接兩個字符串

+1

在你的代碼中,你也可以使用'AndAlso'來啓用短路 –