114日目 今日もマクロ作成

今日も練習でマクロを作成していた。

 

簡単なマクロを作成しているけど、色々な機能を使おうと思っているのでその都度調べながら作っている。
なので復習にもなり中々勉強になっている。

 

再起処理やMidステートメントなど、最近あんまり使ってなかった物を使っているので良い勉強になっている。
Excelの関数も積極的に使っているので、Excelの関数も少し詳しくなった。

 

最近マクロやら自作関数やらを作ってばかりいるので、すっかりプロシージャを分割する事に慣れた。
Functionプロシージャに引数を渡してとか苦手意識があったけど、慣れてしまえば使い易く感じてしまう。

 

簡単なマクロを動かす時も自作関数を組み込んでコードを書いているので、いかにプロシージャを分割する事が便利かが分かる。
実際に動かしてテストをしてみるととても便利さが実感出来る。

 

使い回せるって素晴らしいと思った。

同じコードを毎回書かなくて済むし、無駄な時間がかなり削られたと思う。

113日目 自作関数の手直しやマクロ作成

今日は自作関数に手を加えたり、練習でマクロを作成していた。

 

手を加えたと言ってもそんなに大幅に変更はしていない。
コメントを必要な部分に入れたり、不必要なコメントを削除したり。

 

機能的にはセル範囲を返す部分は問題無く、複数のセル範囲を返す部分が引っ掛かっていた。
複数のセル範囲を呼び出し先から返されても、1つのセル範囲に対して処理したい場合複数のセル範囲を必要ないのでは。

そもそも複数のセル範囲を必要な場面があるのかも不明だ。


なので複数のセル範囲を返す昨日は撤廃し、1つのセル範囲だけ返す関数に変更した。

これで呼び出し元で、Nothingかそうじゃないかで判定して処理が出来る。
この使い方がしっくりくるし一般的なんだろう。

 

あと今日は練習でマクロを作ったりしていた。
簡単な処理のマクロだけど、自作関数を複数使うと中々見づらい。

 

でも自作関数を使わないと同じコードを何回も書く事になるし、メンテナンスも後々大変だ。
自作関数の使い過ぎも可読性が落ちそうだしどうした物か。

112日目 自作関数2つめ完成

今日は2つめの自作関数を完成させた。
以前作った自作関数に機能を追加する形で出来そうだったので、そこまで苦戦せずに完成となった。

 

昨日作った自作関数は条件分岐が多くて見づらい部分が多かったので、今日はシンプルに書く事を心掛けた。
条件分岐や繰り返し処理に頼りすぎずに、Excelの関数を使って1行で書いたりしたらすっきりと書けたと思う。

 

2つ自作関数を作ってみたけど、全体的に見やすいコードが一番良いと思った。
機能が多いとどうしても複雑になるから、見づらくなるのも仕方が無い部分もあるけど。

 

でもシンプルに書けて処理の流れが見やすいコードが、後々見た時もメンテナンスがし易いと思う。
あと一般的によく使われている関数・プロパティ・メソッドを使った方が、他の人もメンテナンスし易いだろう。

 

明日からもマクロや自作関数を作っていくけど、なるべく上記の事を心掛けて作成しようと思う。
多分明日は文字列置換のマクロを作成する予定。

111日目 強化した自作関数の手直し

今日は昨日作っていた自作関数の強化版の手直しをしていた。

 

とにかくコードが長かったので、何とか短く出来ないかと昨日から考えていた。
考えていたら短く出来そうな方法を閃いたので、そのやり方で早速実践してみる。

 

無駄にループが多かったけど、ループの回数を減らす事に成功した。
あとメインの処理だけ更に関数化して、If文の入れ子をなるべく減らしたら割と綺麗なVBAになった。

 

とりあえず本当に完成だと思う。

手は加える事はあっても大幅に変更する事は無いだろう。

 

その後に新たな関数を作成していた。
以前作った自作関数が使い回せそうなので、その関数を使い回して機能を追加すれば出来そうな予感。

 

でも案の定上手くいかないポイントにぶち当たる。
なので明日また作成する。

 

今日は少し体調が悪いので早めに切り上げる。

110日目 強化した自作関数完成

今日は最近作っていた自作関数の強化版を完成させた。

 

機能的にはシート上で罫線で囲まれたセル範囲を取得する物。
果たして使う機会があるのかどうか分からないけど一応作ってみた。

 

結構作り終わっていたので、今日は細かい部分の整備と若干の機能の追加だけ。
テストしてみたけど、普通に動いてくれたので良かった。

 

ただやっぱり自分の思った通りに取得してくれなかったので、何回か手直ししてその度にテスト。
何回か目に何とか正常に動作出来る様になった。

 

その後一応コードの説明やら機能の説明やらをテキストファイルに書き込んでおいた。
VBAにするのも大変だけど、日本語で説明するのもかなり難しかった。

何はともあれ完成。


明日はまた別の機能の関数を作ろうと思う。

109日目 自作関数の強化

今日は、テストコード作成で使っている自作関数の機能を追加していた。

 

シート上にある表全体の範囲を取得する自作関数を以前作成したけど、不完全なまま使っていたので強化しようと思った。
多分頻繁に使い回す関数なので、出来るだけ強化して色々なパターンに対応しておきたい。

 

機能を追加すればする程当然の様にコードが長くなる。
かつ分かり易く書いておかないと、後で自分で見た時に分からなそう。

 

なのでかなり時間をかけて作っていた。
結局今日1日では終わらなかったけど。

 

IntersectメソッドやUnionメソッドを使って何とか形にはなったと思う。
後はコメントを追加して実際にテストするだけ。

 

何とか正常に動いてくれる事を願う。

108日目 TRIM関数

今日もテストコード作成。
今日は2つ目と3つ目が完成した。

 

今日作成したテストコードは、昨日完成させた物とかなり似ているので割と時間が掛からないで出来た。
使い回せるプロシージャを使い回して、メイン処理だけ変更するだけだった。

 

ただ再帰呼び出しを使って処理する所で、ちょっとつまずいて時間が掛かってしまった。
呼び出し先の記述でByRefにしないといけないのに、ByValにしていて苦戦してしまった。

 

気付かないから、ずっと処理されたテキストが元に戻ってしまう現象に悩まされていた。
かなり前に再起呼び出しを勉強したから、結構忘れている状態で作っていたので仕方が無い部分もあるが。

 

でも気付かないで時間を食ってしまったのはやるせない。
何をやってるんだか。

 

とりあえず4つ目のテストコード作成も少しやってみた。
その中で、ExcelのTRIM関数を使ってみようと思って使ってみたらとても便利だった。

 

文字列と文字列の間の複数のスペースを、1つの全角スペースに一瞬で変換してくれる。
しかも複数のスペースは全角半角混合でも問題無し。

とても良い関数を発見した。


明日もテストコードを作成だ。