1

私は VBA クラスを受講していますが、この問題に完全に行き詰まっています。この問題を解決するマスクされたテキスト ボックスを使用することはできません。代わりに、教授は実際に私にコードを学んでほしいと思っています。想像できますか?

冗談はさておき、ユーザーはガス料金をテキスト ボックスに入力し、[計算] をクリックして旅行の総費用を受け取る必要があります。インターフェイスにはさらに多くの機能がありますが、詳細は省きます。ユーザーが小数点以下 1 桁の正の数値以外の数値を入力すると、エラーが返されます。0 または 0000 だけでなく、-3.45 などの負の数もわかりました。ここで、34.56.12.45 のようなエラーと同様に、テキストまたは特殊文字を取得する必要があります。ユーザーは自分の IP アドレスを入力する必要があると感じるかもしれません。割り当ての鍵は、考えられるすべてのユーザー エラーをキャッチすることです。

ここに私が計算のために書いたものとエラーをキャッチしたものがあります。Try/Catch ステートメントも試しました。何も機能しませんでしたが、IFステートメントの最初の2つの部分が機能するようになりましたが、計算に到達するまで最後のIF部分で常に失敗しました。

Private Sub btnCalc_Click(sender As Object, e As EventArgs) btnCalc.Click を処理します

    Dim Mileage As Decimal
    Dim Miles As Decimal
    Dim GasPrice As Decimal
    Dim Cost As Decimal


    If CDec(txtbxGasPrice.Text) = 0 Then
        MessageBox.Show("Please enter a positive dollar amount")
        txtbxGasPrice.Text = String.Empty
    End If
    If CDec(txtbxGasPrice.Text) < 0 Then
        MessageBox.Show("Please enter a positive dollar amount")
        txtbxGasPrice.Text = String.Empty
    End If
    If Cost = CDec((Miles / Mileage) * GasPrice) Then

        Miles = CDec(lblTMiles.Text)
        Mileage = CDec(lblMileage.Text)
        GasPrice = CDec(txtbxGasPrice.Text)

        lblTotalCost.Text = Cost.ToString("C2")
    End If
    If CBool(txtbxGasPrice.Text = "") Then
        MsgBox("You must enter a dollar amount")
    End If

    *If Not IsNumeric(txtbxGasPrice.Text) Then
        MessageBox.Show("Please enter a positive dollar amount")
        txtbxGasPrice.Text = String.Empty*
    End If

End Sub

「これを一番上、真ん中、一番下に配置しましたが、うまくいきませんでした。私は何が欠けていますか?

あなたの考えに感謝します - ローレン

4

3 に答える 3

2

これはあなたの基準を満たし、Davidのテストに合格しているようです:

Function IsValid(txt As String) As Boolean
If Not IsNumeric(txt) Then
    Exit Function
End If
If Len(txt) < 2 Then
    Exit Function
End If
If Not Mid(txt, Len(txt) - 1, 1) = "." Then
    Exit Function
End If
If Not txt > 0 Then
    Exit Function
End If
IsValid = True
End Function

ここに画像の説明を入力

于 2013-10-07T05:32:22.670 に答える
1

これは正規表現の完璧なアプリケーションのように見えますが、この問題の範囲外である可能性があります。vb には、文字列を取得して 10 進数に解析しようとする Decimal.TryParse(または解析) があります。

http://msdn.microsoft.com/en-us/library/system.decimal.tryparse.aspx

xx.xx.xxでどのように動作するかは100%わかりませんが、失敗して問題を解決することは間違いありません

于 2013-10-07T01:46:17.210 に答える