
【この動画で使用する教材ファイル】
・Kiso04_02ForNext.xls
・kiso_mm_movie.pdf(P2:思考と行動の基本)
※講座内で使用する資料は、この個別ページ内でダウンロードできます。
この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。
このページへの投稿/コメント
講義、とても分かりやすいです。
一点、下記の点を教えてください。
home shift ↓↓↓
の後、tabを入れて、”お団子”のところを1つ内側にずらす(インデントを下げる?)のは何故でしょうか。
よくタブを入れ忘れるのですが、それでもなぜか動いてしまった為です。
見やすさの問題でしょうか。
こんにちは。
> 講義、とても分かりやすいです。
それは、よかったです。
> home shift ↓↓↓
> の後、tabを入れて、”お団子”のところを1つ内側にずらす(インデントを下げる?)のは何故でしょうか。
> よくタブを入れ忘れるのですが、それでもなぜか動いてしまった為です。
> 見やすさの問題でしょうか。
はい、見やすさの問題です。
無意識に見やすいコードを書くように身体レベルで習慣づけることはとても大切です。
この課題くらいの規模のマクロならばレイアウトが崩れていても(読める人には)なんとか読めます。
ですが、マクロの規模が大きくなると、コードを整形していないと、全体の流れを読むにも部分を集中的に検証するにしても、大変な労力がかかるようになります。
ひきつづきよろしくお願いいたします。
> 初めまして、クッパと申します。
> 講義、とても分かりやすいです。
> 一点、下記の点を教えてください。
>
> home shift ↓↓↓
> の後、tabを入れて、”お団子”のところを1つ内側にずらす(インデントを下げる?)のは何故でしょうか。
> よくタブを入れ忘れるのですが、それでもなぜか動いてしまった為です。
> 見やすさの問題でしょうか。
が、実際の作業を効率化させる上で、おそらく初歩的な質問にぶちあたってきました。
実作業的な話ですが、たとえば3つのファイルが同一のフォルダに格納されているとします。
やりたいことは、以下の3つのファイルに同作業を施し、上書き保存することです。
例えばですが、
┗格納されているフォルダを開き、
┗ヘッダー部分に色をつける
┗シート全体の字体を、Meiryo UIにし、フォントを「9」にする。
┗上書き保存して、閉じる。
For Next構文やDo loop構文を使うのかな??、、くらいは分かるのですが、
マクロを実行させるためには、フォルダ内を横断するような場合、プロシージャをどこに書いていけばよいのでしょうか・・
ひとつのファイルに、ボタンなどを設置し、マクロを実行させる場合は分かるのですが、
フォルダ全体に作業を施す場合のイメージが掴めないのです。。
3つのファイルが置いてあるフォルダに、マクロ実行用のファイルを置いてあげて、それを実行させるイメージでしょうか?
お問い合わせの件、マクロでやるなら...。というご質問ですね。
マクロ以外の方法でよければ、以下もありますが:
[a] あらかじめご所望の書式のシートを含むエクセルファイルを作り、そのファイルを雛形にして新しいファイルを作るようにする
[b] エクセルのデフォルトの書式を変更する→ https://www.dropbox.com/s/4l632tiqes5m5pg/ExcelDefaultShoshiki.JPG?dl=0
マクロの講座なので、ここでは、「マクロで」ということで考えてみます。
- - -
ステップバイステップで考える必要があります。
以下の順序で、検討し、まずは自分なりに実装にトライしてみてください。
[0]マクロを記述する用のファイルを作り、そこに、以下を行うマクロを作る。
[1] 所定のフォルダにあるひとつのファイルを開く
[2] [1]で開いたファイルの所定のシートをアクティブにする
[3] [2]でアクティブにしたシートの全体を選択する
[4] [3]で選択した範囲に対し、フォントの設定をする
[5] [1]で開いたファイルを上書き保存する
[6] [5]で上書き保存したファイルを閉じる
↑
ここまでがハナコで言う「お団子」
[7] [0]のファイルの所定のシートに、[1]-[6]の作業をさせたいファイル3つのファイル名を記述する
[8] [7]のそれぞれのファイルに対して順番に処理がなされるよう、ハナコ
上記[1]-[6]のすべて、導入編で解説した「自動記録」機能でどんなマクロになるのか?ということを確認できます。
あと、基礎編第1章のサンプルコードには、「ファイルを開いて閉じる」ということをしているマクロがあります。見つけて、試しに動かしてみてください。
- - -
あと、以下、気をつけてください。
> ┗格納されているフォルダを開き、
> ┗ヘッダー部分に色をつける
↑
間に、ファイルを開くという手順を記述することを忘れています。
または、「ファイル」と「フォルダ」という用語を混同されています。
さらに言うと、「なんらかのシートをアクティブにする」という手順の記述も抜けています。
> フォルダ全体に作業を施す場合のイメージが掴めないのです。。
↑
「フォルダ内のすべてのエクセルファイルに」ですかね。
「フォルダ全体」に「作業を施す」と書くと、誤解される可能性がありますね。
エクセルマクロを書く力と、言いたいことを誤解ない言い方で表現する能力、手順書を作る力は、強く関係しています。
○エクセルマクロ習得に関係する4つの能力 - 仕組み化、効率化能力
https://www.exvba.com/4skills.php#shikumi
日頃、日本語で仕事の段取りを説明するときから、十分に言葉に注意してください。
その日頃の努力が、マクロを書き上げる力に直結します。
今の段階でお伝えできることは、このくらいですね。
あとは、浜ちゃんさん自身にある程度の経験がつくまでは、文字ではお伝えできません。
基礎編フォローアップの演習もしっかりやってください。
そこにもいろいろヒントが転がっていることでしょう。
※それから、半角カナの使用も控えましょう。Webでは多くの場で文字化けします。
> マクロについて、少しづつ勉強しており、構文などについては理解が進んできました・・・
> が、実際の作業を効率化させる上で、おそらく初歩的な質問にぶちあたってきました。
>
> 実作業的な話ですが、たとえば3つのファイルが同一のフォルダに格納されているとします。
> やりたいことは、以下の3つのファイルに同作業を施し、上書き保存することです。
>
>
> 例えばですが、
> ┗格納されているフォルダを開き、
> ┗ヘッダー部分に色をつける
> ┗シート全体の字体を、Meiryo UIにし、フォントを「9」にする。
> ┗上書き保存して、閉じる。
>
>
> For Next構文やDo loop構文を使うのかな??、、くらいは分かるのですが、
> マクロを実行させるためには、フォルダ内を横断するような場合、プロシージャをどこに書いていけばよいのでしょうか・・
> ひとつのファイルに、ボタンなどを設置し、マクロを実行させる場合は分かるのですが、
> フォルダ全体に作業を施す場合のイメージが掴めないのです。。
>
> 3つのファイルが置いてあるフォルダに、マクロ実行用のファイルを置いてあげて、それを実行させるイメージでしょうか?
cells(i,j)とか市販の本はなってるんですよね。range型だけ知ってれば
十分な気がします。
Cellsを使いたがる人もいます。
一長一短かもしれません。が、どっちかだけ覚えろということなら、僕ならRangeを推します。(その理由は発展編1にて)
「Range型だけ知ってれば十分」というのは、まさにそのとおりです。
「セルの指定方法としてRangeとCellsの両方を覚える」よりは、「セルの指定方法としてはとりあえずRangeだけ覚え、Cellsを覚える代わりに(それこそ「ハナコ」とかの別のことを覚える」ほうが(初心者の、当面の実務での活用への近道という意味では)良いです。
> range("a" & gyo).valueの書き方すっごい気に入ってますし驚いてます。
> cells(i,j)とか市販の本はなってるんですよね。range型だけ知ってれば十分な気がします。
テキストを見ながらinstrなのかleftなのかmidなのか、、、、と見ながらできました、、、がハナコステップをしらなかったらきっと完成しなかったと思います。最小単位で地道にf5を押しながらダンゴを作り、完成したら
箱入れしnextしたらおしまい。。。ハナコステップの視点は大切ですよね。
「まずは小さなものから」です☆
> manshonlistを使っておさらいしました。サクサクとはいきませでしたが、
> テキストを見ながらinstrなのかleftなのかmidなのか、、、、と見ながらできました、、、がハナコステップをしらなかったらきっと完成しなかったと思います。最小単位で地道にf5を押しながらダンゴを作り、完成したら
> 箱入れしnextしたらおしまい。。。ハナコステップの視点は大切ですよね。
私にもできた!
dim 変数
for 変数=数字 to 数字
next
サクサクできるように練習する
慣れたら簡単ですよ。
あとは、フォローアップの演習ガンガンやってモノにしてください☆
dim=ku
の部分はお団子には含まれないのでしょうか?
なんとなく、dim=○○と、○○=△はセットのような感覚でいたので、片割れがお団子の外にいることに違和感を感じました。
お団子に含めても含めなくてもマクロは動くようなので、気持ちの問題でしょうか・・・
おもしろいご質問ですね。
ここは、たしかに補足が必要かもしれません。
それでも動くのですが、そうすると、ループの回数分だけ、「変数を作る」という作業をこびとちゃんがすることになってしまいます。
そうではなく、1回作った変数を使いまわすようにしたほうがより効率的なので、変数はループより前に宣言するようにしています。
> dim=siku
> dim=ku
>
> の部分はお団子には含まれないのでしょうか?
> なんとなく、dim=○○と、○○=△はセットのような感覚でいたので、片割れがお団子の外にいることに違和感を感じました。
> お団子に含めても含めなくてもマクロは動くようなので、気持ちの問題でしょうか・・・
ハナコの手順を守ればマクロは難しくありません v (^^*
>楽しいです!!
gooska
すばらしいです。受講生の鑑! v(^^
> For Nextの箱を書く練習をした後だと、すらすらできました!
>gooska
仕事を離れて1年ほど経過し、忘却の彼方へ飛び去ろうとするVBAの知識を留めるべく復習を開始しております。
1年前、For Next を学んだ翌日に実務で作成した第1号のVBAが下記のコードなのですが、
excelが得意でない方の作った表で、途中に余計なものが入りまくりソートすらままならなかった1日がかりのコピペ作業がたった数行で「あっ」という間に終わってしまい、めちゃテンションがあがって感動したのを思い出しました。誰でも楽に理解できるハナコのステップを考案した小川先生ってやっぱ天才かもです。
Dim gyo
For gyo = 1 To 510
If Range("ay" & gyo) = "実績(+見通し)" Then '項目名
Range("az" & gyo - 1 & ":be" & gyo - 1).Value = Range("az" & gyo & ":be" & gyo).Value '上期コピペ
Range("az" & gyo - 1 & ":be" & gyo - 1).Interior.Color = vbCyan '上期色付け
Range("bg" & gyo - 1 & ":bl" & gyo - 1).Value = Range("bg" & gyo & ":bl" & gyo).Value '下期コピペ
Range("bg" & gyo - 1 & ":bl" & gyo - 1).Interior.Color = vbCyan '下期色付け
End If
Next
こちらではごぶさたです。
ぜひ、楽しく学んでください。
>excelが得意でない方の作った表で、途中に余計なものが入りまくりソートすらままならなかった1日がかりのコピペ作業がたった数行で「あっ」という間に終わってしまい、めちゃテンションがあがって感動したのを思い出しました。
分かります (^^*
> 誰でも楽に理解できるハナコのステップを考案した小川先生ってやっぱ天才かもで
プログラム書けるようになった人は頭の中で無意識にぼんやりとはやってはいるだろうことではあるんですけどね。
パターン化し、でステップバイステップで画面上で状況確認しながら再現できるようにし、一連の手続きに名称をつけることで伝わりやすくなったのは確かですね。
ひきつづきよろしくお願いいたします。
復習すると、いろいろ再発見もあるかと思います。
>小川様
>仕事を離れて1年ほど経過し、忘却の彼方へ飛び去ろうとするVBAの知識を留めるべく復習を開始しております。
>1年前、For Next を学んだ翌日に実務で作成した第1号のVBAが下記のコードなのですが、
>excelが得意でない方の作った表で、途中に余計なものが入りまくりソートすらままならなかった1日がかりのコピペ作業がたった数行で「あっ」という間に終わってしまい、めちゃテンションがあがって感動したのを思い出しました。誰でも楽に理解できるハナコのステップを考案した小川先生ってやっぱ天才かもです。
>
>
> Dim gyo
>
> For gyo = 1 To 510
>
> If Range("ay" & gyo) = "実績(+見通し)" Then '項目名
>
> Range("az" & gyo - 1 & ":be" & gyo - 1).Value = Range("az" & gyo & ":be" & gyo).Value '上期コピペ
> Range("az" & gyo - 1 & ":be" & gyo - 1).Interior.Color = vbCyan '上期色付け
>
> Range("bg" & gyo - 1 & ":bl" & gyo - 1).Value = Range("bg" & gyo & ":bl" & gyo).Value '下期コピペ
> Range("bg" & gyo - 1 & ":bl" & gyo - 1).Interior.Color = vbCyan '下期色付け
>
> End If
>
> Next
学習記録としてメモを残す
※メモを残すにはこの講座の利用権限が必要です。