Excel VBAを始めるには(010)

Excel VBAを始めるには...
今回はVBAの変数の扱いが理解し易い、金種計算を取り上げる。
金種計算は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
#kuma

ワオ!と言っているユーザー

×
  • ブログルメンバーの方は下記のページからログインをお願いいたします。
    ログイン
  • まだブログルのメンバーでない方は下記のページから登録をお願いいたします。
    新規ユーザー登録へ