エクセルマクロ・VBA達人養成塾 小川です。
キューバ旅行記、その92です。
ハバナからトロント行きの飛行機に乗ります。
ということで、ハバナの空港にて。
空港内のキオスク。簡素。
イミグレーションを通過したところ
ということで、飛行機に乗り込んで
あとは、空を飛ぶばかり。
ハバナを離れていきます。いやー、すげー楽しかった ヾ(´ー`)ノ
そうそう。このブログを読んでいる人中でどのくらいの方がキューバに行かれるのかはよく分かりませんが。
ひとつ、注意。
キューバ土産として知られているもののひとつに、チェ・ゲバラの印刷された人民ペソ貨幣と硬貨があります。
これなんですが。
空港の、イミグレーション通貨前にある両替屋で「両替してくれ」と言うと、「イミグレーションを通過したあとの両替屋にもあるから」と言われましたが。
ダメでした(泣
あと、兌換ペソから日本円への両替も、イミグレーションを入ったあとは、できませんでした。
要注意です。
(2011年9月中旬現在の情報ですが)
ということで、このブログのキューバ旅行記は、明日くらいに地味に終わります ヾ(´ー`)ノ
受講生村瀬正昭さんからいただいた添削依頼の内容を、ブログ上で添削しています。
テーマは、就業時間内、時間外、深夜割増での賃金を計算するマクロです。
第1回: 給与計算ソフトは結構市販されていますが、融通が利かない場合も – Excelマクロ・VBA
第2回: 添削事例 – 給与計算をするマクロ(その2) – Excelマクロ・VBA
第3回: 範囲を指定してデータを一括クリアする – 給与計算をするマクロ(その3) – Excelマクロ・VBA
第4回: 就業時間内、時間外、深夜割増での賃金を計算する(その4) – Excelマクロ・VBA
今日は、いただいたマクロの、以下の部分を添削。
Tm_enter
Dim t As Date
Dim t2 As Date
Dim t3 As Date
Dim cnt As Long
Dim cMax As Long
cMax = Range(“B65536”).End(xlUp).Row
For cnt = 4 To cMax
t = t + Range(“E” & cnt).Value
t2 = t2 + Range(“F” & cnt).Value
t3 = t3 + Range(“G” & cnt).Value
Next
With Range(“E35”)
.Value = t
.NumberFormatLocal = “[h]:mm”
End With
With Range(“F35”)
.Value = t2
.NumberFormatLocal = “[h]:mm”
End With
With Range(“G35”)
.Value = t3
.NumberFormatLocal = “[h]:mm”
End With
End Sub
Tm_enter は呼び出されているマクロ。前回のブログで解説しました。
..ということで。
ここでも、まずはインデントをそろえたい。
以下の[1]では、左に一段移動させています。
(あと、便宜上、間の改行を取りました。)
どうしてこういう整え方をするのか等、詳しい解説は今回はしません。セミナーで説明します。
で、次に、変数について考えたい。
こういう変数のネーミングは、3つくらいまでならまあそれでも分かるのだが。
人間の記憶には「マジカルナンバーセブン」と呼ばれる限界があり、7つ~8つと増えてくると、取り違いや混同が起こる。
そのへんのことについては、僕が英語学習法についてかつて書いた本「英語嫌いの東大卒が教える私の英語学習法」をご参照。
ということで。
今回は添削ということもあるので、この3つに、別の名前をつけてみたい。
前回、E列、F列、G列のセルを指すときに、以下の定数を作った。
今回も、同様のネーミングにしよう。
ネーミングに統一感があるほうが、何かとコーディングも楽。
..そんなに、前回の定数と統一感ないか。まあいいや(汗
いずれにせよ、前回の定数と同様、各変数の変数名は同じ長さの文字列にする。そのほうが、可読性が高い。
あと、前回のマクロの中で、
としたが、これを
としておけば[2-1]~[2-3]の記述も不要。
ということで、以下のとおりになる。
だいぶ、すっきりした。
さらに言うと、[3ここから]から[3ここまで]では、セルE4~E34, F4~F34, G4~G34 のそれぞれについて合計を求めているのだが、この部分は、以下のようにWorksheetfunction.Sumを使うと一発で済む。
というか、ここまでやるなら、そもそも、変数tNai, tGai, tSny を宣言する必要すらない。
変数 cMax を使って、足し算の対象とするセル範囲を指定していました。
でも、これは、表のサイズが固定なら、なくてもいいかも。
ということで、僕なら、[4], [5] も落とします。
それじゃ身も蓋もない、ということでしたら、まあこの変数は残して、以下のとおり。
ということで。
24行のマクロが5行になってしまいました ヾ(´ー`)ノ
今日の添削の見所は、Worksheetfunction.Sum の使い方と、
という、文字列の一部を変数に置き換えるノウハウかな。
前者のノウハウで、就業時間内、時間外、深夜割増での合計労働時間を一発で計算できました。
後者は、正しいトレーニングを積めば難なくできるようになりますけど、基礎ができてないとなかなか難しいかもしれませんね。
お知らせ:
人気のセミナー2つを、久しぶりに開催します。受講受付開始しました。ふるってご参加ください☆
「親指シフト達人養成塾」 (あと3名)
「エクセルデータ分析7つの上級技」 (あと1名)
「エクセルデータ分析」は、ほとんどリピータの方だけで埋まってしまいまして、早くも、残席1つだけとなりました。
親指シフトも、あと3名くらいです。
●無料PDFレポート「誰もが知っているWindowsの、誰も知らない12の技」
http://www.exvba.com/freereport/index.php
●法人研修のお問い合わせはこちら
https://sv86.wadax.ne.jp/~exvba-com/closed/toiawase_houjin.php
●ジーザス小川の個人サイト「こねこねのさいと」へはこちらから
http://www.exvba.com/