| <HOME <お願い事項 <Access2002 TOP <Access2000 TOP <サイト内検索 | ||
| Access97 VBAの森>縦のものを横に | ||
(5)
今回の処理、結構長い構文になりましたね・・・。後でこの構文見て、わけわかんなくなっちゃいそうですよね・・。
それに、何人かのグループで共同で開発したりしてるときって、こういうの、人が書いたのって見る気しなくなっちゃうんですよね・・。
こういう時のために
★処理はわかりやすく入れ子にする。
★なるべくコメントを付ける。
と、いうことをすこーし取り入れるとよいかもしれません。
Public Function BBB()
Dim db As Database
Dim d1, d2 As Recordset
Dim m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12 As Integer '---集計用変数
Set db = CurrentDb
Set d1 = db.OpenRecordset("売上テーブル")
Set d2 = db.OpenRecordset("売上集計")
'----変数の初期化
m1 = 0
m2 = 0
m3 = 0
m4 = 0
m5 = 0
m6 = 0
m7 = 0
m8 = 0
m9 = 0
m10 = 0
m11 = 0
m12 = 0
'----売上集計テーブルの、前回のレコードを削除
Do Until d2.EOF
d2.Delete
d2.MoveNext
Loop
'----変数に代入。集計処理開始。
Do Until d1.EOF
Select Case DatePart("m", d1![売上日])
Case 1
m1 = m1 + d1![売上金額]
Case 2
m2 = m2 + d1![売上金額]
Case 3
m3 = m3 + d1![売上金額]
Case 4
m4 = m4 + d1![売上金額]
Case 5
m5 = m5 + d1![売上金額]
Case 6
m6 = m6 + d1![売上金額]
Case 7
m7 = m7 + d1![売上金額]
Case 8
m8 = m8 + d1![売上金額]
Case 9
m9 = m9 + d1![売上金額]
Case 10
m10 = m10 + d1![売上金額]
Case 11
m11 = m11 + d1![売上金額]
Case 12
m12 = m12 + d1![売上金額]
End Select
d1.MoveNext
Loop
'----売上集計テーブルに追加
d2.AddNew
d2![1月] = m1
d2![2月] = m2
d2![3月] = m3
d2![4月] = m4
d2![5月] = m5
d2![6月] = m6
d2![7月] = m7
d2![8月] = m8
d2![9月] = m9
d2![10月] = m10
d2![11月] = m11
d2![12月] = m12
d2.Update
End Function
入れ子というのは、タブキーとか使って、行の左端を整えて入力するってことです。
左端が全部一直線だと、どこからどこまでがループで、If文はどこまで関わっていて・・・という、処理の一塊がわかりにくくなるんですよね。
なので、うまく工夫して、ぱっと見てどこからどこまでが関連するひとつの処理か、わかりやすく書いて残そう、ということです。
まあ、やったからどうなるってわけじゃないんですけどね。
コメントとは、左端にシングルコーテーション ' を付けた行のことで、処理には直接関わらず、何を入力しても問題のない注釈行になります。
ここから下、何をやるのか、どういう意味なのか、チョコっと書き記しておくと、後で何かと便利ですよ。
ふむ。。。今回は少々長丁場でしたか。でも、段取りつかめるとけっこうオモシロイですよね。
VBAってのも含めて、プログラムを書くということは作文を書くのと同じことです。
何にしても、処理の段取りをしっかりつかまないとイケナイですよね。
構文自体はそんなに難しいもんじゃないですけど、希望どおりの処理を形にしていくのが、なかなか一筋縄じゃいかない・・・。
VBAが難しそう・・と思っちゃうのは、そういうところかな、と思ったりしたりなんかしてる今日このごろです。
ここまで抵抗なく進むことができたと、手応えを感じた方は、いけてるかもしれないですね。
でも、やっぱりいろいろ気を付けなくちゃいけないこととか、知っておかないといけない知識とかありますから、それは少しずついろいろな角度から習得していくようにしましょう。
いやー、でもね、こういう風に1行1行入力したものが思ったように動いたときって、結構うれしいんですよ。
どんなにへんちくりんな処理でも。。。ね。
んじゃあ、またお会いしましょう。さよなら、さよなら、さよなら・・・。
(といいつつ、次のコーナーへ・・・)
| |