パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
受講生さんの投稿
(投稿ID: 4458)
小川 慶一さんのコメント
(コメントID: 6141)
受講生さんのコメント
(コメントID: 6142)
田中 宏明さんのコメント
(コメントID: 6143)
(コメントID: 6145)
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2025年04月28日 08:52
2025年04月22日 05:41
2025年04月18日 09:15
2025年04月09日 07:21
2025年04月06日 09:31
2025年04月29日 17:15
2025年04月29日 17:13
2025年04月28日 09:16
2025年04月28日 07:22
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2025年04月15日 11:30
2025年04月08日 16:30
2025年04月07日 16:30
2025年04月04日 15:45
2025年03月27日 13:30
2025年02月04日 08:51
2025年02月03日 12:58
2024年11月27日 11:48
2024年11月25日 12:07
2024年11月17日 09:51
2025年03月26日 22:33
2025年03月26日 22:12
2025年03月24日 22:28
2025年03月19日 20:10
2025年03月18日 20:52
2025年04月16日 08:30
2025年03月18日 09:07
2025年03月18日 09:06
2025年03月15日 13:23
2025年02月26日 16:37
2025年04月02日 21:01
2025年04月02日 20:47
2025年04月02日 20:37
2025年04月01日 22:03
2025年04月01日 21:27
2025年04月16日 08:32
2025年03月18日 09:10
2025年03月18日 09:09
受講生さんの投稿
(投稿ID: 4458)
For Nextステートメントについて質問があるのですが、For NextステートメントはRange("A" & i )のように書いてはいけないと今日言われました。
Cells( 1 , i ) のように書きなさいと。
理由としてはRangeでかくと
① 処理が遅い
② そんなコードを書いていると笑われる
との事です。
私は小川先生の講座で1年以上VBAについて勉強してきましたのでこの書き方に違和感はありませんでした。
ちなみにCellsの書き方も知っています。
そこで、小川先生がこの書き方でやってきているのは初心者に理解しやすいようにですか?上級者向けの講座ではCellsを使っているのでしょうか?
Rangeの書き方でも行の処理ならできるので良いかなと思っていたのですが今日、思いっきりその書き方はダメだよと言われました。
と、言うのも現在、東京都が行っている職業訓練というものでExcel VBA実践コースというのを受講しています。
2月から3ヶ月間のコースでまもなく終わりを迎えます。
その講師の先生から言われました。
その先生の教え方はものすごくわかりにくく、受講者のほとんどが授業を聞かずに自分たちでテキストを読み込んだり、ネットで調べながら勉強していたほどお世辞にも優秀な講師とは言えないです。
どこがダメか具体的に教えて欲しいといっても処理速度が遅いのと田中先生(Office田中)が言っていたからとしか説明してもらえませんでした。
私の中では信頼の置けない講師の方なので腑に落ちなくて・・・。
小川先生に直接質問させて頂きました。
今後もっと複雑なコードを書くようになったらRangeでの書き方はしなくなっていくのでしょうか?
ご教授、お願いいたします。
小川 慶一さんのコメント
(コメントID: 6141)
ははは。
自分の言葉に責任を持って、信念を持って教育してくれる人から学びましょう。
そうでない人の言葉はすべて戯言です。
借り物の言葉に真実はありません。
もし借りてきたその言葉が全否定されることがあっても、今度は、自分のせいではなく、その人が借りた言葉を発した人(この場合は、その某先生)のせいにするだけです。取り合うだけ無駄。
そんな地縛霊以下の存在に惑わされぬよう ヾ(´ー`)ノ
> ① 処理が遅い
だいたい、そういうことを言う人に限って、マシンで余計なサービスが動いていて、そっちで処理に時間を取られているという...。
とか、ショートカットキーぜんぜん使ってなくて、マクロの実行までによけいに時間がかかっている、とか (^^;
そもそも、処理速度のことを言うなら、「VBAを使う」という選択自体ダメです。
「アルゴリズムがイケてなくて処理が冗長」とかならともかく、RangeがCellsかの違いなんて、あったとしても、どんぐりの背比べ。
そんなところでチューニングに凝っても、そんなの過剰最適ですし、僕はそんな微々たる差には関心を持てないです。
RangeかCellsかで悩んでいる間に、事務仕事全般で改善できることはもっともっといっぱいあるはずです。
その先生は、VBAのことしか頭になくて、「業務改善と何か」とか、そういうことにはさっぱり意識が向かないのでしょう。
あとは、知識をひけらかしたいだけ、とか。
> ② そんなコードを書いていると笑われる
うーん、どうですかね。
Cellsを使うことのメリットとしては、横方向へのくり返しも簡単に書けるというのはあります。
Rangeなら、そのためには、Offsetを使いますね。理由の説明は略しますが、横方向へのくり返しならRangeよりCellsのほうが良さそうですね。
でも、DPRに基づいて仕事をしているとしたら、そもそも横方向へのくり返し自体滅多にすることはないです。
なので、上記の理由は、「DPRに基づいて仕事をしていたならそもそも滅多に生じないことのための準備」ということになります。
一般的に、ダメな人作ったダメな資料ほど、横方向へのくり返しを必要とします。
「Cellsは横方向へのくり返しが便利!」という人もいますね。そういう人は、たぶん、普段見ているもの、取り扱っているものがダメなのでしょう。
一方、RangeはRangeで、複製セル範囲を簡単に指定でき、かつ、そのセル範囲をメモリに格納できるので、そういうときにはCells(を組みあせて範囲選択する)より記述が容易で、かつ、(おそらく)記述にかかる負荷に比して高速です。(Cellsでも複数セルを含む範囲を指定するはできます。けど、書き方が面倒くさい)
僕が基礎編でRangeを使っている理由はいろいろなのですが、そのひとつとして、「自動記録で得られるコードはほぼRangeで記述されているから」ということが挙げられます。
(決して、「『大村あつし』や『渡辺ひかる』といった大御所が2000年代に書いた教科書ではCellsではなくRangeが使われていたから」とかではありません (^^; )
「自動記録で得られるコードはほぼRangeで記述されている」にもかかわらずCellsも教えるとしたら、受講生は、CellsとRangeの両方を習得しなくてはいけません。
一方、Rangeだけで教えたら、Cellsについて学ぶストレスを初心者に与えないで済みます。
そして、Cellsでできることは、Rangeでもできます。
初心者はただでさえ他にも覚えることが多いのですから、RangeとCellsの両方を教えると大きな負荷になります。
言い換えると、Cellsを覚える代わりに、初心者は、別の何かを覚える余裕がなくなります。
では、「他の何か」をを覚える代わりにCellsを覚える必要があるのか?Rangeで目的果たせるならそれでいいじゃない、と僕は思います。
そもそも、初心者にとっては、冗長かとか高速かとかいうこと以前に、「まずは、思い通りに動くコードを書けるようになる」ということが重要なのですから。
そういう意味でも、パフォーマンスのことは二の次です。
>上級者向けの講座ではCellsを使っているのでしょうか?
いえ。上級者向けでもRangeです。
複雑になればなったで、Rangeのほうがかえって僕は便利と感じます。
あと、VBAでコーディングスタイルのことで人に直接喧嘩を売ってくる人は、たいてい、VBA以外は書けないか、ほとんど書けない人ですね。
世界に対する見聞が狭いです。狭い世界しか見えてないから、そこでの細かい違いばかりが気になるのでしょう。
..ということで、いろいろな角度からいろいろ書いてみました。
あと、以下のブログ記事も参考になるかな、と。
○[質問] 同じ機能を実現するマクロの書き方が複数ある場合、どの書き方が良いか分からなくて迷います。
https://www.exvba.com/4378/
↑記事の内容を思い切り要約して一行にまとめると「万人を満足させる書き方なんてない」ということです。
以上のとおりです。
お役にたてれば、と。
受講生さんのコメント
(コメントID: 6142)
お世話になります。
ご返信ありがとうございました。
お話し聞けて良かったです。
正直、書き方を否定された時はその講師にめっちゃ腹が立ちまして(笑)
とっさに先生に質問してしまいました。
でも使い方の違いがわからない私は言い返すこともできず…。
すっごく悔しかったです。
この3ヶ月、その講師から学んだことは本当にわずかなもので
質問しても回答はほとんど的をえていないのにこちらがわからないと
逆切れをしてくるような方だったのでテキストを読み込み練習問題と並行して
ガラパゴスタディで購入した動画を繰り返し見て学んでいました。
職業訓練とは名ばかりでほぼ独学でした。
お役所仕事なのはわかりますが、講師の質を見直すべきだとつくづく感じました。
受講生の中でもともとVBAの経験がある人は独学で勉強し、まったく初めての人はVBAは
自分にはレベルが高すぎた。と途中であきらめてしまっていました。
良い講師であったのならそうはならないと思うのですが。
小川先生とは真逆でVBAエキスパートの資格命!みたいな方でした(笑)
なのでわからない人の気持ちもわからない。
というか、実務で使うことは重視せず、資格の取得のみに力を入れているみたいな感じなのかなと。
教える側の人間になってはいけない人だわ。と思いながら過ごしてきました。
これからも自信を持ってRangeで書いていきます!
職業訓練を修了したら仕事復帰をすることになるので実務を積むチャンスです。
転職をきっかに職業訓練に参加したのですが、必要なのは長い時間かけて学校に通うことではなく、
日々の実務の中で少しずつ勉強したマクロを使って業務の効率化していくことだなとわかりました。
火事場の馬鹿力じゃないですが、切羽詰まらないと身に付き方も違うなと思いました(^_^;)
残り少しですが少しでも実務に直結できるようなコードが書けるように動画を見ます。
また、動画に関して質問があった際はさせて頂きますのでご教授お願いします。
田中 宏明さんのコメント
(コメントID: 6143)
RangeとCells、どちらもRangeオブジェクトです。
詳しくは以下の通りです。
・RangeはWorkSheetのプロパティであって、セル範囲をプロパティとして持つことができるRangeオブジェクト
・CellsはWorkSheetまたはRangeのプロパティであって、親オブジェクトの全セルを包むRangeオブジェクトで、更に引数で1つのセルを指定できるRangeオブジェクト
これは頭が混乱して仕事が進まなくなるので、小川先生の導きに従うのみですね。
小川 慶一さんのコメント
(コメントID: 6145)
>親オブジェクトの全セルを包むRangeオブジェクトで
親オブジェクトの全セルを「含む」でしょうか?
ともあれ、
> ・RangeはWorkSheetのプロパティであって、セル範囲をプロパティとして持つことができるRangeオブジェクト
> ・CellsはWorkSheetまたはRangeのプロパティであって、親オブジェクトの全セルを包むRangeオブジェクトで、更に引数で1つのセルを指定できるRangeオブジェクト
その言葉の意味をスラスラ理解できたらもはや基礎編レベルではないですねw