2017-05-17 3 views
0

私はVBAで新しく、ユーザーが製品のコストと支払額を入力した後、100,50,20、10,5、および1の金額を与えるプログラムを作成しようとしています。と。ただし、ユーザーが200で製品の30を支払うと、プログラムは2 x 100を変更として返します。それは1×100、1×50、1×20でなければなりません。事前にVBAラウンド・ダウン・キャッシャー・プログラム

Dim userinput As Integer 
Dim paid As Integer 

Dim hundra100 As Integer 
Dim femtio50 As Integer 
Dim tjugo20 As Integer 
Dim tio10 As Integer 
Dim fem5 As Integer 
Dim ett1 As Integer 

userinput = InputBox("How much did the products cost?", "Cost") 
paid = InputBox("How much did you pay with?", "Paid") 

exchange = paid - userinput 

hundra100 = exchange/100 
kvarHundra = exchange Mod 100 

femtio50 = kvarHundra/50 
kvarFemtio = kvarHundra Mod 50 

tjugo20 = kvarFemtio/20 
kvarTjugo = kvarFemtio Mod 20 

tio10 = kvarTjugo/10 
kvarTio = kvarTjugo Mod 10 

fem5 = kvarTio/5 
kvarFem = kvarTio Mod 5 

ett1 = kvarFem/1 

MsgBox ("Your change is: " & exchange & vbNewLine & "100: " & hundra100 & vbNewLine & "50: " & femtio50 & vbNewLine _ 
& "20: " & tjugo20 & vbNewLine & "10: " & tio10 & vbNewLine & "5: " & fem5 & vbNewLine & "1: " & ett1) 

ありがとう:

は、ここに私のコードです!支払っ

+0

答えが正しくありませんか? – Andreas

答えて

0

為替= -
ユーザ入力は、この
為替=ユーザ入力に変更、それによって正の値を取得する - 機能
などをApplication.WorksheetFunction.RoundDown使用してhundra100、femtio50、および他のためのすべての変数ROUNDDOWN
を支払いました:Application.WorksheetFunction.RoundDown(hundra100、0)

hundra100 = exchange/100
hundra100 = Application.WorksheetFunction.RoundDown(hundra100, 0)
kvarHundra = exchange Mod 100
Range("A2").Value = hundra100

0

floatを切り捨てるには、int()を使用できます。

Sub ttt() 
    Dim userinput As Integer 
    Dim paid As Integer 

    Dim hundra100 As Integer 
    Dim femtio50 As Integer 
    Dim tjugo20 As Integer 
    Dim tio10 As Integer 
    Dim fem5 As Integer 
    Dim ett1 As Integer 

    userinput = InputBox("How much did the products cost?", "Cost") 
    paid = InputBox("How much did you pay with?", "Paid") 

    exchange = paid - userinput 

    hundra100 = Int(exchange/100) 
    kvarHundra = exchange Mod 100 

    femtio50 = Int(kvarHundra/50) 
    kvarFemtio = kvarHundra Mod 50 

    tjugo20 = Int(kvarFemtio/20) 
    kvarTjugo = kvarFemtio Mod 20 

    tio10 = Int(kvarTjugo/10) 
    kvarTio = kvarTjugo Mod 10 

    fem5 = Int(kvarTio/5) 
    kvarFem = kvarTio Mod 5 

    ett1 = kvarFem/1 

    MsgBox ("Your change is: " & exchange & vbNewLine & "100: " & hundra100 & vbNewLine & "50: " & femtio50 & vbNewLine _ 
    & "20: " & tjugo20 & vbNewLine & "10: " & tio10 & vbNewLine & "5: " & fem5 & vbNewLine & "1: " & ett1) 
End Sub 

コードの問題は、すべての変数が整数として宣言されているが、それは数を丸めるように、あなたの計算に数がフロートになることです。

+0

ありがとう、これは助けて、うまくいった!再度、感謝します! – Cam

+0

あなたが私の答えを受け入れるといいですね。 https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Andreas

+0

@Cam?あなたが人々の答えを受け入れないことを人々が見ると、あなたを助けません。 – Andreas