金種計算はExcelでは関数を使えば、VBAなど不要だが、プログラム
学習では金種計算はとても役に立つ。
VBAに限らず、この手の計算は変数の型や切り捨てなどの整形処理を
理解せねば作成出来ない。
結果の正誤も即座に出来る、入門には最適だと思う。
くりかえすが、これはVBAの勉強であり、Excelで金種をやれと言って
いるのではない、Excelには関数があり、こんな面倒な事をしなくても
金種計算は出来る。しかし、VBAで作ることにより、数値の扱い、変数
の代入など習得する内容は多い。
以下、Source
Kinsyu01は1項目のみの計算、Rangeを使ってある。
Kinsyu 02は10項目が出来る、Loop(For-Next)を用い、
繰り返し処理で10項目を処理している。
さらに、RangeではなくCellsを使うことで、変数でセルの扱いが
出来る事を理解出来るVBA。
Sub Kinsyu01()
'
' Kinsyu01 Macro
'
' 変数の宣言は必ず行う、今回はすべて整数型、末尾の_nは数値型を表すVEGAのRule
Dim Zan_n, Man_n, Gos_n, Sen_n, Goh_n, Hya_n, Goj_n, Jyu_n, Goe_n, Ichi_n As Integer
' Sheetの選択
Sheets("Sheet1").Select
'以下は金種の計算、A2に入力した数値を最初は10000で除し、その
'値を変数に入れる
Man_n = Range("A2") / 10000
'ここが重要、変数値には剰余があるので、切り捨て処理をする。
'更に、最初の入力値から、それを減算し、残高とするが、
'この残高は何度も使用する。
Zan_n = Range("A2") - Int(Man_n) * 10000
'ここでは10000の数をB2に入れる(表示される)
Range("B2") = Int(Man_n)
'以下は同じ内容、残高の扱いに注意
Gos_n = Zan_n / 5000
Zan_n = Zan_n - Int(Gos_n) * 5000
Range("C2") = Int(Gos_n)
Sen_n = Zan_n / 1000
Zan_n = Zan_n - Int(Sen_n) * 1000
Range("D2") = Int(Sen_n)
Goh_n = Zan_n / 500
Zan_n = Zan_n - Int(Goh_n) * 500
Range("E2") = Int(Goh_n)
Hya_n = Zan_n / 100
Zan_n = Zan_n - Int(Hya_n) * 100
Range("F2") = Int(Hya_n)
Goj_n = Zan_n / 50
Zan_n = Zan_n - Int(Goj_n) * 50
Range("G2") = Int(Goj_n)
Jyu_n = Zan_n / 10
Zan_n = Zan_n - Int(Jyu_n) * 10
Range("H2") = Int(Jyu_n)
Goe_n = Zan_n / 5
Zan_n = Zan_n - Int(Goe_n) * 5
Range("I2") = Int(Goe_n)
Ich_n = Zan_n / 1
Range("J2") = Int(Ich_n)
'
End Sub
'-------------------------------------------------------------------------------------
Sub Kinsyu02()
'
' Kinsyu02 Macro
'このVBAは、10行分の金種計算をする、記述は1行分だが、For-Nextで10回繰り返している
'重要なのは、Range指定ではなく、Cellsを使っている事。Cellsは(座標はY-X)でなので
'最初のiは行、次の数値は列を示す、行だけ変数で変化させるが、列は固定数値。
'1は入力部分、2から10までは 万、5千、千、五百、百、五十、十、五、一の列の事
Dim Zan_n, Man_n, Gos_n, Sen_n, Goh_n, Hya_n, Goj_n, Jyu_n, Goe_n, Ichi_n As Integer
Dim i As Integer
Sheets("Sheet2").Select
For i = 2 To 11
Man_n = Cells(i, 1) / 10000
Zan_n = Cells(i, 1) - Int(Man_n) * 10000
Cells(i, 2) = Int(Man_n)
Gos_n = Zan_n / 5000
Zan_n = Zan_n - Int(Gos_n) * 5000
Cells(i, 3) = Int(Gos_n)
Sen_n = Zan_n / 1000
Zan_n = Zan_n - Int(Sen_n) * 1000
Cells(i, 4) = Int(Sen_n)
Goh_n = Zan_n / 500
Zan_n = Zan_n - Int(Goh_n) * 500
Cells(i, 5) = Int(Goh_n)
Hya_n = Zan_n / 100
Zan_n = Zan_n - Int(Hya_n) * 100
Cells(i, 6) = Int(Hya_n)
Goj_n = Zan_n / 50
Zan_n = Zan_n - Int(Goj_n) * 50
Cells(i, 7) = Int(Goj_n)
Jyu_n = Zan_n / 10
Zan_n = Zan_n - Int(Jyu_n) * 10
Cells(i, 8) = Int(Jyu_n)
Goe_n = Zan_n / 5
Zan_n = Zan_n - Int(Goe_n) * 5
Cells(i, 9) = Int(Goe_n)
Ich_n = Zan_n / 1
Cells(i, 10) = Int(Ich_n)
Next i
'
End Sub
わかお かずまさ
VegaSystems
📷📷📷📷📷📷
#LAN_PRO
#Bloguru
If you are a bloguru member, please login.
Login
If you are not a bloguru member, you may request a free account here:
Request Account