2012-02-25 30 views
0

私はビジュアルベーシックなオンラインを勉強していますが、先生のスイッチがあり、私の質問には答えられません。だから私はここでもそれに尋ねるかもしれないと思った。そこで、テキストボックス、ラベル、ボタンのみを使用するコンピュータのトラブルシューティングプログラムを作成するように求めました。私はこのコードを書いたが、私が実行するとこのエラーが出る "文字列" Y "からタイプ 'ブール'への変換は無効です。"私はそれを修正する理由や方法を知らない。助けてくれてありがとう。文字列 "Y"から "Boolean"への変換が無効です

Private Sub btnHelp_Click(sender As Object, e As System.EventArgs) Handles btnHelp.Click 
     Dim strBeep As String 
     Dim strHDD As String 

     strBeep = Me.txtBeep.Text 
     strHDD = Me.txtHDD.Text 


     If strBeep And strHDD = "Y" Then 
      Me.lblMessage.Text = "Contact tech support." 

     ElseIf strBeep = "Y" And strHDD = "N" Then 
      Me.lblMessage.Text = "Check drive contacts." 

     ElseIf strBeep And strHDD = "N" Then 
      Me.lblMessage.Text = "Bring computer to repair center." 

     ElseIf strBeep = "N" And strHDD = "Y" Then 
      Me.lblMessage.Text = "Check the speaker connections." 
     End If 
    End Sub 
End Class 

答えて

0

strBeepは、if条件で何かと比較せずに使用しています。これはテキストであり、booleanには変換できません。

この操作を行います。

if strBeep = "Y" ... 

代わりの

if strBeep ... 

コンプリート条件の場合:

If strBeep = "Y" And strHDD = "Y" Then 
     Me.lblMessage.Text = "Contact tech support." 
ElseIf strBeep = "Y" And strHDD = "N" Then 
     Me.lblMessage.Text = "Check drive contacts." 
ElseIf strBeep = "N" And strHDD = "N" Then 
     Me.lblMessage.Text = "Bring computer to repair center." 
ElseIf strBeep = "N" And strHDD = "Y" Then 
     Me.lblMessage.Text = "Check the speaker connections." 
End If 
+0

感謝を。彼らが時間を節約するようにその変更を実装し、両方が同じことをチェックしているなら、それはより良いでしょう。 – Photoshopper

0

あなた

If strBeep And strHDD = "Y" Then 

If strBeep = "Y" And strHDD = "Y" Then 

Andブール演算子であり、比較strHDD = "Y"が真か偽をもたらした後、それが評価されますする必要があります。言い換えれば、あなたが書いていることは、 "両方がYである"という意味ではなく、strBeepが真であり、strHeが真または偽の値ではないので、strHDDが "Y"

1

テキストボックスから文字列をできるだけ早く変換するのがよりクリーンな方法です。そうではなく文字列として暗いstrBeepを持つよりも、持っている:

Dim bBeep As Boolean 
Dim bHDD As Boolean 

bBeep = (Me.txtBeep.Text = "Y") 
bHDD = (Me.txtHDD.Text = "Y") 

は、その後、あなたの文は次のように見れば:それをやった

If bBeep And bHDD Then 
    'do something 
Else If bBeep And Not bHDD 
    'do something else 
End If 
関連する問題