50の手習い~人生実験室

人生100年時代。50歳から人生を開拓出来るのか?自分の身体を使って実験中

VBA習得への道(12月18日)

12月18日 水曜日


今回のお勉強は、三太郎式マクロ勉強法ゴールドディスクのレッスン。レッスン149を行いました。

翌月のシートを自動作成するマクロです。
個人的にこれ、待っていました!!!という感じです(笑)
今の職場で日次のチェック作業をエクセルに表を作って行っていて、シートそのものは月ごとに新しく用意していたテンプレートシートをコピーして、月とか曜日とかを手作業で入力して作っていたんですが、
その作業を別の人に引き継ぐ事になって、しかもその引き継ぐ相手が、全くエクセルを使えない人で・・・・
関数とかそんなレベルにすら到達していない、シートを選択して右クリックしてコピーするとかその程度の作業すら出来ない人だったんです。

なので、マクロを使ってクリックすると「翌月の」シートが出来上がって、日付や曜日、それから特定の曜日のセルに塗りつぶしを行う・・みたいな動作が出来るように作りました。
もうその時にはそこそこマクロを使えるようになっていたので、ググったりしながらどうにか完成させました。
でももっとブラッシュアップしたいし、基礎も学びたいので、今回のこのレッスンはとても楽しみでした。
また今回もFormat関数が出てきましたが、これ意外と便利かもしれない!と、今更感じてきました(笑)
日付を色んな形式に変換できる。普通の日付(2019年12月12日)とか、日付は除いて曜日だけに変換するとか幅広く使える。
エクセルのセルの書式設定のユーザー定義をコードで指定するような感じですかね。
ユーザー定義もFormat関数も使用頻度は高いのでこれはこれで別途勉強しておくべきですね

docs.microsoft.com


expressionにはnowやdateなどを入れるのですが、直接日付を入れて良いのかわかりません。
思うんですけど、こういう関数とかの解説ってわかりづらいよね。そもそも私のようなド素人の場合はexpressionって何やねん?から始まる(笑)

こっちの方がわかりやすいかな。

www.tipsfound.com


「値を文字列型に変換したい」場合にFormat関数を使うということらしい。なるほど。
now(現在)を「"2019年12月12日水曜日"」という「文字列」に変換したいような
場合に使うのですね。わかるようなわからないような・・・、あとやっぱりこれもまたCstr関数との違いがわからず・・・

今回は日次で使うような集計表のテンプレートを月が変わった時にシートを増やして新しい月の日程や曜日を入力する内容なので、日付表記に関する関数が多く出てきました。
Formatだけではなくて、nowとか、Dateserial関数とか、ワークシート関数でも似たようなものありましたよね。DATE関数だったかな?
今回のレッスンは私にとっては鬼ムズでした。
理屈は理解できるんですが、関数が多かったし、それから前月の末日を調べる場合、その導き出し方が複雑で、頭が混乱します。(例えば日付をゼロにすると前月の末日の値になるみたいな)

今回は都度関数を調べながらの学習だったので、1チャプターに関して1時間程かけての学習でした。

www.start-macro.com