🎍 新年を迎えて、これからの積み重ね

VBA学習(VBA Study)

あけましておめでとうございます。
2026年1月11日、新年最初のブログ投稿です。

今年は 「積み重ね」 をテーマに、
技術の学習や制作活動を、無理せず、でも止めずに続けていきたいと思っています。

VBAやWeb制作など、
「自分で考えて、手を動かして理解すること」を大切にする一年にしたい。

派手な成果はすぐに出なくてもいい。
昨日の自分より、ほんの少しでも前に進めていればOK🍃
そんなスタンスで、今年もブログを書いていきます。

🌿しんどい気持ちから、少し前を向けたきっかけ

正直に書くと、
新年早々ずっと前向きだったわけではありません。

仕事のことでうまくいかない感覚が続いて、
「自分、全然できてないな…」と思ってしまい、
気持ちが沈んだまま 半日くらい何もできずに寝込んでしまった日 もありました。

頭では
「勉強しなきゃ」
「手を動かさなきゃ」
と思っているのに、体がついてこない。

そんな自分にさらに落ち込んで、
何もできなかったこと自体が、またしんどくなる。

それでも、このまま一日が終わるのは嫌で、
気持ちを切り替えるために コワーキングスペースに行くことにしました。

そこでやったのは、
気合を入れた勉強というより、
VBAで自動化システムを作りながら、手を動かすことでした。

🌿 自動化システムを作りながら学んだこと

作っていたのは、
VBAの理解を深めるための学習用の自動化システムです。

実務でそのまま使っているわけではありませんが、
「実際にありそうな業務」を想定して作ることで、
理解の深さがまったく違うと感じました。

例えば、

  • 入力されたデータを読み取る
  • 担当者名ごとにフォルダを作成する
  • ファイルを自動で振り分ける
  • 手作業の流れをコードで再現する

うまくいかないところで止まり、
調べて、直して、また動かす。

途中で模擬試験にも触れてみると、
「あ、これさっき書いてた処理と同じ考え方だ」
と、理解がつながる瞬間がありました。

一気に元気になったわけではありません。
でも、
しんどかった気持ちが、少しだけ前を向いた。

「今日はダメな日だった」ではなく、
「ちゃんと前に進めた日だった」
そう思えたことが、自分にとってはすごく大きかったです。

そして、その中で実際に理解が深まった内容が、次のポイントです。

🌿 昨日〜今日の VBA 学習で、特に理解が深まったこと


① Date 関数と組み合わせて、月末を取得する考え方

今回 DateSerial を使った処理では、
Date 関数や YearMonth 関数と組み合わせて書いていました。

実際に使った形は、こんな感じです。

DateSerial(Year(Date), Month(Date) + 1, 0)

最初は少しややこしく感じましたが、
分解して考えるとシンプルでした。

  • Date → 今日の日付
  • Year(Date) → 今日の「年」
  • Month(Date) → 今日の「月」
  • +1 → 来月
  • 0 → 前月末(=今月末)

「0日目は前月の末日になる」という仕様と、
Date 系の関数を組み合わせることで、
「今月末」を自動で取得できる

模擬試験の問題と、
実際に書いていたコードがつながった瞬間でもあり、
「あ、こういうことか」と腑に落ちました。

欲しい日付書き方
今月月初DateSerial(Y, M, 1)
今月月末DateSerial(Y, M+1, 0)
来月月初DateSerial(Y, M+1, 1)
来月月末DateSerial(Y, M+2, 0)

② Boolean は「状態を覚えておくため」に使った

今回の自動化を作る中で、
Boolean 変数の役割について、ひとつ大きな気づきがありました。

これまでは
「True / False を判定するためのもの」
という認識でしたが、

実際に使ってみて、
処理の途中で起きたことを“覚えておくため”に使うもの
だと理解できました。

今回の処理では、

  • 新しい請求書を作り始めるタイミング
  • その請求書を保存して締めるタイミング

この2つを、
ループの中で判断する必要がありました。

If 文でその場の条件を見るだけでなく、
一度判定した結果をフラグとして保持し、
後続の処理で使う

この考え方が分かってから、
処理の流れを組み立てやすくなったと感じています。

  • If は「今その場」の判断
  • Boolean は「状態を覚えておく」ためのもの

この違いを、
実際に手を動かしながら理解できたのが、
今回の大きな収穫でした。


③ 最終行取得は「Excelの↑キー」の感覚で覚えた

lastRow = Cells(Rows.Count, "B").End(xlUp).Row

この書き方は、
Excelで「Ctrl + ↑キー」を押したときの動きと同じ感覚だと理解しました。

  • Rows.Count → シートの一番下
  • .End(xlUp) → ↑方向にデータのあるセルまで一気に移動

そう考えると、
コードの動きが頭の中でイメージしやすくなりました。

Excel操作と結びつけて覚えることで、
暗記ではなく「理解」として残った感覚があります。


🌿 まとめ|立ち止まっても、積み重ねていく一年に

仕事でうまくいかず、
自分に自信が持てなくなる日もあります。

そんな時、今回の自分を支えてくれたのは、
「もっと頑張らなきゃ」という気合ではなく、
勉強に向かう時間そのものでした。

コードを書いて、
理解がつながって、
昨日より少し前に進めたと感じられたこと。

それが、
仕事で落ち込んだ気持ちを、
少しずつ立て直してくれました。

今年も、
仕事に悩みながら、勉強に支えられながら、
一歩ずつ積み重ねていきたいと思います。

🌿 杜 Tech Life