アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

ExcelVBA入門 #10:定数を定義することとそのメリット

はじめに

久しぶりの記事追加です。
今回は、地味ながらもプログラミング言語問わずの人気者、「定数」について。

定数って何?

もしかしたら、中学か高校かの数学の時間に聞いたことがあるかもしれません。
それとだいたい同じで、「値が変化しないもの」です。

ちょっとVBAで書いてみましょう。
商品価格に消費税を加えた合計金額を計算するプログラムです。

Public Sub calcSum()
    Dim lSum As Long
    Dim lItemPrice1 As Long
    Dim lItemPrice2 As Long
    
    lItemPrice1 = Range("A1").Value
    lItemPrice2 = Range("A2").Value
    
    lSum = 0
    lSum = lSum + lItemPrice1 * 1.08
    lSum = lSum + lItemPrice2 * 1.08
    
    MsgBox "合計は" & lSum & "円です。"
End Sub

ここで、「1.08」は定数です。
セルのアドレス「A1」と「A2」も定数といえます。

これで何か問題あるの?

さて、ここで消費税が10%になったら…?
「1.08」を「1.1」に書き換える必要がありますね。
商品価格を保存するのが「A1」「A2」以外のセルになったら…?
これも「A1」「A2」を別のセルに変える必要がありますね。
数行しかないプログラムなのでまだともかく、ちょっと大きなものになると、全部書き換えるのは大変なことです。

じゃあどうすればいいの?

プログラムを最初から以下のようにしておきます。

Const TAX As Double = 1.08
Const ITEM_1_RANGE As String = "A1"
Const ITEM_2_RANGE As String = "A2"

Public Sub calcSum()
    Dim lSum As Long
    Dim lItemPrice1 As Long
    Dim lItemPrice2 As Long
    
    lItemPrice1 = Range(ITEM_1_RANGE).Value
    lItemPrice2 = Range(ITEM_2_RANGE).Value
    
    lSum = 0
    lSum = lSum + lItemPrice1 * TAX
    lSum = lSum + lItemPrice2 * TAX
    
    MsgBox "合計は" & lSum & "円です。"
End Sub

関数の前の「Const [定数名] As [型] = 値」で、定数を定義しています。
それから、消費税やセルのアドレスが入っていたところで、定義したものを用いるよう変更しています。
最初に定義しておけば、プログラム中に何度出てきても、変更するときは定義部分だけで済むのです。

尚、定数は最初に書いたとおり「値が変化しないもの」なので、
ここで定義した定数は、プログラム中で変更することはできません。

Const TAX As Double = 1.08

Public Sub calcSum()
    ' だめ(エラーになります)
    TAX = 1.1
End Sub

今回の例のように、
「(いつか変更する可能性はあるけれど)プログラムの動作中には変わらない数字や文字」を定義すると良いです。

おしまい

コード中に直接埋め込まれている数字を「マジックナンバー」と呼びます。
(一般的にはどうか知りませんが、新入社員の頃にそういう話を聞きました)
「なんの数字かわかんないけどちゃんと動く!不思議!」という皮肉を込めての呼び名だそう。

たしかに定義なんてしなくてもプログラムは動くわけですが、そのうち痛い目を見ます。
簡単なプログラムを書いているうちから、定義して使う癖をつけておくとよいかもしれません。

次回予告

次は…何書こうかな。未定です。

秀丸マクロの登録方法

気が付いたら今までの人生30年の半分は秀丸にお世話になっていました。

中学生の頃から親のPC使ってネットで二次創作小説を探しては秀丸にコピペ、フロッピーディスクに移して自分のPCへ。
自分のPCでもまた秀丸を開いて読み漁る…というオタク。


それはともかく、仕事を始めてからは作業の効率化を図るのに欠かせないのが秀丸マクロになっています。

マクロコードの記事は既にいくつか書いていますが、そもそも作り方をきちんと書いていなかったので残しておきます。

↓マクロのコードサンプル記事はこちら
honey8823.hateblo.jp

①マクロを作って保存

内容は省略しますが。

マクロを書いたら「.mac」という拡張子で保存します。
秀丸で「名前を付けて保存」しようとすると、ファイルの種類としても選択可能です。

保存先はどこでも良いのですが、
マクロファイル用のフォルダは用意されているのでそこに保存するのがベターでしょう。
(保存先のパスはマクロ登録画面で確認できます。詳しくは後述)

②保存したマクロを秀丸に登録

マクロを使うには、秀丸からマクロ登録する必要があります。
メニューバーの マクロ>マクロ登録 を選択すると、以下のような画面が出てきます。

マクロ登録画面
f:id:honey8823:20170120144022p:plain

一番下に書かれているのがマクロファイル保存用のフォルダです。

  • タイトル:任意のタイトルを入力
  • ファイル名:マクロを選択(上記のフォルダ以外にある場合は「...」から選択)
  • 編集:マクロの中身を編集できる

登録したいファイル名を指定して「OK」すれば登録完了です。
1~10に登録したマクロは、「Ctrl+番号(10の場合は0)」で実行できるようになります。

③登録したマクロにショートカットキーを割り当てる

「Ctrl+番号」でも充分便利なのですが、ファンクションキーやマウス操作などに割り当てることもできます。

メニューバーの その他>キー割り当て で設定可能です。
f:id:honey8823:20170120145140p:plain

左側でShift、Ctrl、Altとキーやマウス操作との組み合わせを選び、
右側で割り当てる処理を選びます。上のセレクトボックスを「メニュー/マクロ」にすると、②で登録したマクロが選べるようになります。

もともといろいろな機能が割り当てられているので、普段使っている機能をうっかりつぶさないように気を付けましょう。

駅メモ #18:あけましておめでとうございます

年末年始は愛媛まで行ったり福島まで行ったり。
新駅はそんなに取れていませんが、ミクさんのイベントや駅奪取のイベントがそこそこ進んだので良かったかな。

晴れ着ラッピング…ずるい…かわいい…
とりあえずふぶさんが出るまで回しました。

進捗:前回(12/26)からの比較

  • 駅 3102 → 3134(+32)
  • 路線 373 → 375(+2)
  • 都道府県 31 → 31(+0)
  • コンプ路線 177 → 179(+2)

育成進捗 ()内は前回比

  • [S]ふぶ 68/75 (Lv3up / 上限10up)
  • [S]しぐれ 22/75 (Lv6up / 上限5up)
  • [T]みらい 10/75 (上限5up)
  • [D]ありす 73/80 (上限5up)
  • [S]ミオ 6/80 (上限10up)
  • [D]くに 29/65 (Lv23up)
  • [A]ハル 8/60 (上限5up)
  • [S]アサ 70/75 (上限5up)
  • [S]カノン 19/55 (Lv14up)
  • [S]スピカ 46/55 (Lv4up)
  • [D]なほ 7/55 (上限5up)
  • [S]ヒメギ 1/55 (new!)

未所持

  • なつめ
  • ノア

その他進捗はこちら。
駅メモ:でんこ育成状況とコンプ進捗状況 - アナログCPU:5108843109

福袋を全部買い占めた結果、推し(ふぶ・いずな・ありす・アサ)が全員出てきたり新規ヒメギさんが出てきたりと非常に良かったです。買ってよかった。ノアどの出なかったけど。
スカウトチケットは誰に使うか悩んで温存中。


自分用育成メモ:

引き続きサポーター(+いろは・くに)育成強化中。

まずは久々に上限突破できたふぶさん・アサさんが最優先。

…なんですけど、やっぱりサポーター強化するにしてももっと厳選すべきかと考え中。

アサ・うらら・いろは あたりは入れ替えて使うのでノーカンとして、他に5人選ぶとすれば
ふぶ・スピカ・もえ・みこと・しぐれ…かな。
1人をサポートするだけならみこと・しぐれは両立しないので、あと1人…迷うけどセリアかなあ。
次点以降は ひいる>カノン>レイカ>ヒメギ>ミオ くらいの感じ。
3番目強化のミクさんと姉専用のくにさんは別枠。

そうすると、

  • カンスト目指して最優先:ふぶ>アサ
  • Lv50目指してリンクスコア中心:スピカ>(くに)
  • APorHPが200を超えるまで新駅ボーナス中心:いろは>みこと>しぐれ>セリア
  • カンスト済み:もえ)
  • (Lv50になったので当分保留:うらら)

という感じか。

駅メモ #17:プレイ開始1周年を過ぎて

12月3日にプレイ開始して365日目を迎えました。
f:id:honey8823:20161226160741p:plain:w400

f:id:honey8823:20161226160840p:plain:w400
瞬間的にですがデイリー1位ゲット。
(ログインして確認した瞬間は同じく365日目の旦那と並んで2位&3位だったところを、いくつかレーダー飛ばして無理矢理1位に…)

f:id:honey8823:20161226161057p:plain:w400
7892人目?くらいでした。

ということでこの日はデイリーランキング上位を目指す旅へ。

f:id:honey8823:20161226161154p:plain:w400
f:id:honey8823:20161226161243p:plain:w400
f:id:honey8823:20161226161517p:plain:w400
あとはスクリーンショット取り忘れましたがキングオブメモリー共感もゲット。

そんなこんなでデイリーランキングチャレンジは5位でした。
f:id:honey8823:20161226162314p:plain:w400

しかし1年…早いものです。
今見直してみると、最初はルナを選び、
1日目と2日目で レイカ・コタン・もえ・ふぶ を引いている…
もしかしてそこそこ引きが良かったのでは。
特にふぶさん・もえさんは1年間ずっと支えてくれていて大変助かってます。
ふぶさん最初から今までずっと嫁だよ(真顔)なかなか上限突破できないけど…



あとは、れいこさんのお仕事回数が5000を突破。
「れいこがいればなんでもできる」一番乗りいただきました。
f:id:honey8823:20161226162355p:plain:w400

次は10000回ですが…さすがにグランクラスの子を5000回使い続けるのはちょっとつらいかな…。


ミクさんを普通に育成してたらAPが低すぎて称号がどんどん溜まるのでこちらも記録してみましたが…ライバルが多すぎるw
f:id:honey8823:20161226162627p:plain:w250f:id:honey8823:20161226162630p:plain:w250
f:id:honey8823:20161226162633p:plain:w250f:id:honey8823:20161226162638p:plain:w250
f:id:honey8823:20161226162644p:plain:w250


進捗:前回(11/30)からの比較

  • 駅 2945 → 3102(+157)
  • 路線 371 → 373(+2)
  • 都道府県 30 → 31(+1)
  • コンプ路線 171 → 177(+6)

育成進捗 ()内は前回比

  • [T]いろは 35/60 (Lv1up)
  • [T]ダッチュー 50/55 (上限5up)
  • [S]スピカ 42/55 (Lv9up)
  • [D]なほ 7/50 (Lv6up)
  • [S]ミク 41/55 (new!)

未所持

  • なつめ
  • ヒメギ

その他進捗はこちら。
駅メモ:でんこ育成状況とコンプ進捗状況 - アナログCPU:5108843109


自分用育成メモ:

引き続きサポーター(+いろは)育成強化中。
最優先のふぶさん・アサさんは仮カンスト中。
その他はとりあえずLv50を目指したいわけですが、うららちゃんは達成。
ということで、現在の優先度は
 スピカ>いろは>ミク>しぐれ>みこと>カノン>レイカ>ひいる>セリア>ミオ
という感じ…ですが…
全員Lv50目指すのもなかなか大変そうなので、もうちょっと考えたいところ…。

パッシブスキル(スピカ・しぐれ・みこと)を優先しようかなあ。
しかしアタッカーほぼ使わないからしぐれちゃんも後回しかな。
あと、どうせみことさん育てるなら強化されたくにさんと併せて使ってみたいので、先にくにさん育ててみようか。

ということで、しばらくは
 スピカ>(くに)>みこと>いろは>ミク>しぐれ
という感じかな。

ならば
 リンクスコア狙いは スピカ>ミク
 新駅ボーナス狙いは (くに)>みこと>いろは
となるか。

駅奪取のニャッピーデー検証

駅奪取の「5周年ニャッシュ」を引き当てたので、機能「5のつく日はニャッピーデー」でもらえるアイテム検証。
まだ始まったばかりなので、まずは気長に記録していきます。

バッテリー10(1個)から駅奪取シールまで、当たり外れの振れ幅がなかなか大きいですね。

駅メモコラボも終わり、ログインし忘れも多いので歯抜けです…

日付 もらえたアイテム
2016-12-05 バッテリー100 1個
2016-12-15 バッテリー100 1個
2016-12-25 時短タイマー 1個
2017-01-05 ベーシックガチャチケット 1個
2017-01-15 バッテリー100 1個
2017-01-25 時短タイマー 1個
2017-02-05 強奪チーズ1day 1個
2017-02-15 おつかいチケット 1個
2017-02-25 強奪チーズ1day 1個
2017-03-05 強奪チーズ5min 1個
2017-03-15 (記録忘れ…)
2017-03-25 神の手(3個入り) 1個
2017-04-05 駅奪取シール 5個
2017-04-15 神の手(3個入り) 1個
2017-04-25 バッテリー50 1個
2017-05-05 バッテリー10 1個
2017-05-15 ニャッシュ用スタミナオイル30 1個
2017-05-25 (ログイン忘れ)
2017-06-05 (ログイン忘れ)
2017-06-15 強奪チーズ1h 1個
2017-06-25 ベーシックガチャチケット 1個
2017-07-05
2017-07-15
2017-07-25

駅メモ:でんこ育成状況とコンプ進捗状況

随時更新します。

都道府県コンプ状況

凸・カンストグランクラスの記録(記載は達成順)

  • 上限突破完了
    • ニャッシュ
    • りんご
    • コタン
    • (もえ)
    • いおり
    • ルナ
    • ひいる
    • (れいこ)
    • るる
    • レン
    • レーノ
    • いちほ
    • (いずな)
    • そら
    • Liko
    • セリア
    • (ありす)
    • ミオ
    • ほこね
    • みこと
    • みらい
    • イムラ
    • レイカ
    • (ふぶ)
  • カンスト
    • (れいこ)
    • いずな
    • もえ
    • ふぶ
    • ありす
  • グランクラス
    • れいこ

駅メモ #16:3人目のカンスト

もえさんもカンスト

f:id:honey8823:20161130172803p:plain:w400

進捗:前回(10/31)からの比較

  • 駅 2935 → 2945(+10)
  • 路線 371 → 371(+0)
  • 都道府県 30 → 30(+0)
  • コンプ路線 170 → 171(+1)

無事にハッカドールイベントの250駅を突破したので2号さんをお迎えし、
2周年ガチャであたる・なほも確保。
現時点で未所持はなつめだけになりました。
12月の新でんこはまたそろそろアタッカーかな?

育成進捗(今回から変化のあったのだけ残すことにする) ()内は前回比 ☆は凸完了、★はカンスト
[S]セリア 8/80 (上限5up) ☆
[S]もえ 80/80 (Lv9up) ★
[D]しいら 11/75 (上限5up)
[A]イムラ 50/70 (上限5up)
[S]しぐれ 16/70 (Lv9up / 上限5up)
[S]うらら 47/65 (Lv16up / 上限5up)
[T]チコ 18/60 (上限5up)
[A]レーノ 8/80 (Lv1up) ☆
[D]ありす 72/75 (Lv2up)
[S]ミオ 6/70 (上限5up)
[S]みこと 23/75 (上限10up)
[D]くに 6/60 (上限5up)
[D]にちな 9/70 (上限10up)
[A]そら 8/80 (上限5up) ☆
[S]アサ 70/70 (Lv5up)
[A]さいか 13/60 (上限5up)
[S]カノン 1/55 (上限5up)
[A]あたる 1/50 (new!)
[S]スピカ 21/55 (Lv20up / 上限5up)
[D]なほ 1/50 (new!)
[A]Liko 6/80 (上限5up) ☆
[T]ハッカ1号 1/50 (new!)
[T]ハッカ2号 1/50 (new!)
[T]ハッカ3号 1/55 (上限5up)

未所持
・なつめ

凸&カンスト状況
駅メモの育成状況 - アナログCPU:5108843109


自分用育成メモ:

相変わらずサポーター育成強化中。サポーターじゃないけどいろはも加えよう。
もえさんが無事カンストしたので、優先度としては
 ふぶ>アサ>うらら>スピカ>いろは>しぐれ>みこと>カノン>レイカ>ひいる>セリア>ミオ
という感じかな。
ふぶ・アサは仮カンスト中なので(ただし上限突破次第最優先で育てる)
当面のリンクスコア狙いは うらら>いろは>みこと>スピカ
新駅ボーナス狙いは スピカ>いろは>しぐれ>みこと
でいこう。ひとまずLv30,Lv50を目処にという感じで。


そしてやっぱりマイルや経験値に影響の出にくいところではれいこさんの回数稼ぎ継続中。