5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
受講生さんの投稿
(投稿ID: 4737)
伝票作成マクロを一通り受講したのち、一から記憶を頼りに作成してみました。
挙動については問題なかったので、あとは不必要な部分やセオリーに反している部分があればご指摘いただけると幸いです。
なお一点、並び替えマクロ(プロシージャ名:sorting)にて自動記述後取捨選択箇所の判断がつかずそのまま活用している為(セミナー内に記載されていた例と同じコードが自動で書かれなかったので・・・)、不要な部分とその判断方法をご教示頂けたら嬉しいです。
小川 慶一さんのコメント
(コメントID: 6611)
こんばんは。
添削を返送します。
全体に、とてもしっかり書けていると感じます。
With ... End With の中身の整理は今回お送りした添削内容を元に練習してみてください。
次回添削課題を拝見するのを楽しみにしています。
受講生さんのコメント
(コメントID: 6615)
早速添削ありがとうございます。
頂いたコメントに沿って添削してみたので再投稿させていただきます。
なお、そのうえでの確認(質問)事項は以下点です。
①worksheet("main")A列に番号を割り振るマクロにてオートフィルを活用しコードを記述してみました。
使い方としてはこのような感じであっておりますでしょうか?
②withの中身について並び替えマクロ(sorting)も自分なりに改編してみました。一応動きました。
select/selectionについては基本まとめる、というお話がありましたが、その上で同じオブジェクトやプロパティ、メソッドを連続して指定しているコードがあればwitでまとめる、みたいな考え方で正しいでしょうか?
③ご指摘いただいている中で「'以下の3つ、format関数を適用することも試してみてください」の部分だけ、アドバイス頂いた内容が理解できませんでした・・・浅識で申し訳ございません・・・。
④サブプロシージャ:keisenの中身を頂いたアドバイス通りに添削してみました(というかほぼ頂いたもののコピペですが・・・)
すると各シートの罫線が記載されなくなってしまったのですが、何か必要部分を消してしまっているのでしょうか・・・?
小川 慶一さんのコメント
(コメントID: 6617)
おはようございます。
添削を返送します。
> ①worksheet("main")A列に番号を割り振るマクロにてオートフィルを活用しコードを記述してみました。
> 使い方としてはこのような感じであっておりますでしょうか?
良いかと思います。
他の方のコードも参考にしてみてください。このウェブページ内を autofill というキーワードで検索するといろいろ出てきます。
> ②withの中身について並び替えマクロ(sorting)も自分なりに改編してみました。一応動きました。
> select/selectionについては基本まとめる、というお話がありましたが、その上で同じオブジェクトやプロパティ、メソッドを連続して指定しているコードがあればwitでまとめる、みたいな考え方で正しいでしょうか?
基本の考え方は、「オブジェクトを指定している部分が重複しているなら with でまとめ得る」です。この表現で必要十分です。
「プロパティ、メソッドも with でまとめ得る」というのはちょっと違います。
たとえば、上位のオブジェクトから見たらそのオブジェクトのプロパティと見えるものがあったとしても、その「上位のオブジェクトから見たらプロパティ」なもの自身が「オブジェクト」であれば with で指定するオブジェクト足り得ます。メソッドも、その戻り値(*発展編2で出てくる用語。ざっくり言うと、その言葉か指すもの)がオブジェクトならば with でまとめ得ます。
たとえば、 workbooks("book1.xlsm").worksheets("sheet1").range("a1").value = 3 というコードがあったとして、
workbooks("book1.xlsm") はオブジェクトです。
worksheets("sheet1") は workbooks("book1.xlsm") から見ればプロパティですが、 worksheets("sheet1") 自身はオブジェクトです。
range("a1") は worksheets("sheet1") から見ればプロパティですが、 range("a1") 自身はオブジェクトです。
よって、以下のどの書き方も可能です。
もう少し具体的な例を示します。
たとえば、以下の with_sample_before のようなコードがあったとして with_sample_after1, with_sample_after2, with_sample_after3 のどの手直しの仕方もありです。
.Range("a1") だけでなく、 .Font, .CurrentRegion のどれも、戻り値はオブジェクトです。ですので以下のどれもOKです。(前者は戻り値として Font オブジェクトを返し、後者は戻り値として Range オブジェクトを返す)
なお、念のために補足すると、「(withを使わない書き方も含めて)以下のうちどれかだけが正解/最適化された状態であり、どれかだけができるようになっていれば良い」というものではありません。
どのオブジェクトについてまとめた表現にするか?どこまでやるべきか?というのはケースバイケースです。
「ケースバイケース」なので、どの書き方も自在にできるようになるまで練習する必要があります。
「自分の技術的な限界のためにこのやり方しか選択できない」となるとコーディングに不自由が生じてしまうからです。
添削内でも、修正過程を含めて示しました。
実際に同様の過程を経てやってみてください。
> ③ご指摘いただいている中で「'以下の3つ、format関数を適用することも試してみてください」の部分だけ、アドバイス頂いた内容が理解できませんでした・・・浅識で申し訳ございません・・・。
添削を参照してください。
また、添削を参考にして Format 関数についてご自身で研究してみてください。ネットを検索すると、サンプルがいろいろ転がっています。
> ④サブプロシージャ:keisenの中身を頂いたアドバイス通りに添削してみました(というかほぼ頂いたもののコピペですが・・・)
> すると各シートの罫線が記載されなくなってしまったのですが、何か必要部分を消してしまっているのでしょうか・・・?
以下のとおりなので、左辺と上辺にはきちんと罫線が引かれています。(上辺はもともとある15行目の下辺にある線とかぶるので見た目上変化はないですが)
ということで、あとは、底辺、右辺、内部の縦線、内部の横線ですね。
当初いただいたものでは、まだ以下がありますね。
コメントにて「以下の要領で」と書いたのは、以下についても同様にリライトしてくださいという趣旨でした。やってみてください。
以下は添削です。