|
▼ume さん:
(友人のPCからPCで投稿し、HNをそのままにしていましたので削除して再投稿します)
おはようございます
簡略化ということでいえば、チェックボックスの値の判定による転記も、
上手にループ処理しておられますので特に、申し上げることはないのではと思います。
簡略化ではなく、コードの記述方式ということで申し上げれば、これは、その人、それぞれ
様々な書き方があるわけですが、
・まず、必要な変数を記述しておられるのはとてもよいことですね。
ただ、すべてを記述しましょう。 アップされたコードでは j の記述がないですね。
これでも、問題なく動いているということは、モジュールの先頭に Option Explict の記述が
ないということですね。VBE画面のツール->オプションの編集タブで、変数の宣言を必須 に
チェックをいれておかれることを強く、おすすめします。
・で、その変数宣言の場所ですが、アップされたコードのように、実行コード内で
それが使われる直前に、記述しても、もちろん問題ないのですが、わかりやすさという観点では
プロシジャの先頭にまとめて記述するのがよろしいように思います。
記述をすればメモリーが確保される、そうすると処理効率に影響を与える、だから、ぎりぎりまで
宣言せず、それにいたる処理効率を少しでもアップすべきだという見解もあるかもしれませんが
昨今のPCのメモリー状況を考えますと、先頭でまとめて記述しても全く問題ないと思いますね。
・シートオブジェクトを、 Sheet2 とか Sheet15 という 「コードネーム」で指定しておられますね。
もちろん、「シートはコードネームで指定すべき」とおっしゃるエキスパートさんもおられます。
ただ、コードネームは、ブックを作成したり、あとでシートを追加したりしたときに自動採番される
順番で、Sheet1,Sheet2,Sheet3 と設定されます。生まれたときにつけられる本名のようなものです。
その後、Sheet1をブックの最後に移動したとしても、Sheet1はSheet1のままです。
また、Sheet15 まで存在するブックのSheet3を削除し、その場所に新規シートを挿入すると
このシートのコードネームはSheet16 になります。
これにたいして「シート名」がありますね。シートタブに表示されている名前です。
Sheet1にたいして、"一覧表"という名前をつけることがありますね。このシートは
このシートがブック内のどこに移動しようとSheets("一覧表")として参照できます。
あとからブックを見たときに、「ブックを作った時点で一番左にあったはずのシート」というより
"一覧表"というシート名をもったシート というほうが、よりわかりやすくありませんか?
・あとは、そうですね、Sheet2.Range(・・・ といった記述が多く登場しますね。
もちろん、問題はありませんが、これを
With Sheet2
.Range(・・・
.Range(・・・
End With
こう書きますと、コード数は2行増えますが、各コードは、少しスリムになりますね。
|
|