
【この動画で使用する教材ファイル】
・Kiso03.xls
・kiso_mm_movie.pdf(P9:関数リファレンス)
・kiso_mm_movie.pdf(P2:思考と行動の基本)
※講座内で使用する資料は、この個別ページ内でダウンロードできます。
この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。
学習記録としてメモを残す
質問や感想を投稿する
投稿時に 記号が \ に変換されてしまいますが、気にせず投稿してください。※投稿に必要な権限がありません。
このページへの投稿/コメント
講義の課題から下記のサブプロシージャを作りました。
Sub MANSIONRENSHUU()
Dim KU
KU = InStr(Range("C2"), "区")
Range("F2").Value = Left(Range("C2"), KU)
Range("G2").Value = Mid(Range("C2"), KU + 1, 100)
End Sub
動画では
Range("F2").Value = Left(Range("C2").value, KU)
Range("G2").Value = Mid(Range("C2").value, KU + 1, 100)
というふにleft関数、mid 関数に .value が入りますが、私の回答は間違っているでしょうか?
ご確認よろしくお願いいたします。
こんばんは。
> というふにleft関数、mid 関数に .value が入りますが、私の回答は間違っているでしょうか?
結果的に同じ状態が得られます。そういう意味では間違いとは言えません。
とはいえ、普段からセルに値を設定するときには .Value をつけるよう心がけられることを強く推奨します。
Range("C2") と Range("C2").Value では言葉が指しているものが違います。
Range("C2") = ... という書き方で結果的に値が変更されるのは、その違いをVBがある程度吸収してくれるからです。
ですが、「どうせ結果的に同じ」と思ってこれに頼っていると、以下の問題が生じます。
[1] 「言葉が指すもの」の違いに敏感になれないので、上達が阻まれる
[2] 特に、[1]の延長として、「オブジェクト型変数」の学習でつまづきやすくなる
以下の記事も参考にしてください。
https://www.exvba.com/2183/
> いつもお世話になりありがとうございます。
>
> 講義の課題から下記のサブプロシージャを作りました。
>
> Sub MANSIONRENSHUU()
> Dim KU
> KU = InStr(Range("C2"), "区")
>
> Range("F2").Value = Left(Range("C2"), KU)
> Range("G2").Value = Mid(Range("C2"), KU + 1, 100)
>
>
> End Sub
> 動画では
> Range("F2").Value = Left(Range("C2").value, KU)
> Range("G2").Value = Mid(Range("C2").value, KU + 1, 100)
>
> というふにleft関数、mid 関数に .value が入りますが、私の回答は間違っているでしょうか?
>
> ご確認よろしくお願いいたします。
講義の課題から下記のサブプロシージャを作りました。
Sub MANSIONRENSHUU()
Dim KU
KU = InStr(Range("C2"), "区")
Range("F2").Value = Left(Range("C2"), KU)
Range("G2").Value = Mid(Range("C2"), KU + 1, 100)
End Sub
動画では
Range("F2").Value = Left(Range("C2").value, KU)
Range("G2").Value = Mid(Range("C2").value, KU + 1, 100)
というふにleft関数、mid 関数に .value が入りますが、私の回答は間違っているでしょうか?
ご確認よろしくお願いいたします。
いつもお世話になっております。
キャプチャーのように作成して実行したら、見本通りになりましたが、
こちらも模範解答としてよろしいでしょうか?
こんにちは。
for文を使った書き方については第4章でお伝えしています。
今の段階でコメントさしあげるより、第4章まで学習を終えてからの受講生さん自身のコメントを待ちたいと思います (^^
> 受講生 さん:
>
> > 小川さん
> > いつもお世話になっております。
> >
> > キャプチャーのように作成して実行したら、見本通りになりましたが、
> > こちらも模範解答としてよろしいでしょうか?
>
> 追記:ファイルがうまく張り付けできなかったようなので、コード載せておきます。
>
> Sub sikubunnkatu()
> Dim i As Long
> For i = 1 To 50
>
> Dim ku
> ku = InStr(Range("C" & i).Value, "区")
> Range("F" & i).Value = Left(Range("C" & i).Value, ku)
> Range("G" & i).Value = Mid(Range("C" & i).Value, ku + 1)
> Next
>
> End Sub
6:20くらいの所から音量が小さくなったり大きくなったり、しばらく小さいままだったり、後半も一回小さい所がありました。意味が取れなくなるほどではないです。
受講環境のせいかもしれませんが、お知らせまで。
ガラパゴスタディー事務局 本山です。
ご連絡が遅くなり誠に申し訳ございません。
この度は音量についてお知らせいただきありがとうございました。
ご報告いただきました音量が小さくなる件について、ご指摘の箇所を含め、事務局で確認させていただきます。
確認後に改めてご報告いたしますので、今しばらくお待ちいただけますでしょうか。
何卒よろしくお願いいたします。
ガラパゴスタディー事務局 本山です。
音量が小さくなる件につきまして、事務局でも状況を確認いたしました。
該当動画の差し替え等、今後対応を進める予定でございます。
この度はご迷惑をおかけし申し訳ございませんでした。
今後も気になる点がございましたら、ご連絡いただけますと幸いです。
どうぞよろしくお願いいたします。
> 内容に関する質問でなく申し訳ないのですが、【動画33】の中で一部音量が小さくなったり戻ったりという所があったので、お知らせがてら書き込みます。
ガラパゴスタディー事務局 本山です。 音声が小さくなる動画33について 動画の差し替えを行いましたのでご報告いたします。この度はご迷惑おかけいたしました。
1行ずつマクロを試すとういお話が、すごく良い学びになりました。
left関数をそのままコピペして、mid関数にして試してみる
→「線」以下の文字が抜き出される
→「sen-1」で試すと「急線」以下の文字が抜き出される
→「sen+1」で試すとうまくいく
という思考の流れは参考書には載っていない為、受講して本当によかったです!
「まずは小さなものから」、「まずは、書いてから考える」、「まずは実行してから考える」です。
この原則を常に意識してください!
> [感想]
> 1行ずつマクロを試すとういお話が、すごく良い学びになりました。
>
> left関数をそのままコピペして、mid関数にして試してみる
> →「線」以下の文字が抜き出される
> →「sen-1」で試すと「急線」以下の文字が抜き出される
> →「sen+1」で試すとうまくいく
>
> という思考の流れは参考書には載っていない為、受講して本当によかったです!
感想フォームに入力するのは、初めてです。
丁寧な解説ありがとうございます。
動画を見ていると、なるほどこうやるんだ!と、納得しながらなんとか、
ここまでの動画をこなしています。
しかしながら、自分でいちからVBAを書くとなると、
式の考え方が、やはり難しいなと思ってしまいます。
今回の動画なら、関数をどうやって選び使っていくか、などです。
もっと、経験していけば、こうやればいいのかなと、
考え方が身についていくのかと、少し不安な部分もあります。
数学で言えば、この教材は理論の解説用です。
実践練習は、以下の2つにて存分に提供しています。ガンガン練習してください。
○エクセルマクロ・VBA基礎編フォローアップ ベーシック
https://forum.pc5bai.com/lesson/course/27
○エクセルマクロ・VBA基礎編フォローアップ アドバンスド
https://forum.pc5bai.com/lesson/course/86
演習をしっかりやっていくうちに、実務で似たような課題がでたときにスラスラ対応できるようになるでしょう。
一般の人がマクロを実務で活用できないのは、理論がしっかりしていないのと、演習量が不足していることが主な原因です。
逆に言うと、演習をしっかりやれば、あとは仕事で出てくる事例の多くは演習で出てきたパターンの応用で済みます。
それから、ちょうど、理系科目の学び方全般について言えることについて、以下のページのコメント「10473」からのやりとりで書いたところです。
ので、こちらも参考にしてください。
https://forum.pc5bai.com/lesson/page/893
> 小川先生、はじめまして。
> 感想フォームに入力するのは、初めてです。
>
> 丁寧な解説ありがとうございます。
> 動画を見ていると、なるほどこうやるんだ!と、納得しながらなんとか、
> ここまでの動画をこなしています。
>
> しかしながら、自分でいちからVBAを書くとなると、
> 式の考え方が、やはり難しいなと思ってしまいます。
> 今回の動画なら、関数をどうやって選び使っていくか、などです。
> もっと、経験していけば、こうやればいいのかなと、
> 考え方が身についていくのかと、少し不安な部分もあります。
先生のおしゃるとおり理解して、回数をこなすことが、自分のものになっていくんだなと思いました。
まだまだ、演習もたりないので、これからも継続していこうと気合をいれました。
逆に言うと、そういうことしない人に追いつき、追い越すことは簡単です。
教材さえよければ、復習すればするほど学びが得られるものです。基礎編フォローアップも、何度もくり返し解くことが大切ですよ!
> 小川先生
>
> 先生のおしゃるとおり理解して、回数をこなすことが、自分のものになっていくんだなと思いました。
> まだまだ、演習もたりないので、これからも継続していこうと気合をいれました。
自力でいろいろ組み合わせる力が大切です。
料理と同じです。素材を自由に組み合わせて使いこなせるようになれば、レパートリーもいっきに広がります☆
> left,mid,right関数が文字列をとり、len,instr関数が数値をとってくるところのみを見ても、何が役に立つのかわからなかったのですが、組み合わせによって、こんなに効率化に寄与できるのか!と、とてもビックリしました。感動です!
【動画8】【動画9】を再度見直しました。
Dim を使うメリット
・わかりやす変数名にしておくとその処理の内容がわかりやすい
・各行のプログラムが何を意図しているかわかりやすい
・何度も計算するものは変数を使用すると入力時間の短縮になる
・同じ計算を何度もするのはメンテナンスをするときに大変なので変数を使用する
以上が Dimを使うメリットです。
8778 : 小川慶一の回答 (2017-08-27 00:56:48)
受講生 さん:
> Dimを使うことでマクロが作りやすくなる。
↑
人への説明としては間違いです。
イイタイコトは分かりますが、だからと言って放置すると、別のページでの指摘のようなことのくり返しになりますので。。
第1章の変数について説明してる動画、レジュメ資料等を振り返り、お書きになった一文を修正してください。
そのメリット実現のために使っているのは変数です。dimではありません。
dimは変数宣言(変数生成)時に使うキーワードです。
> ご指摘ありがとうございます。
> 【動画8】【動画9】を再度見直しました。
>
> Dim を使うメリット
> ・わかりやす変数名にしておくとその処理の内容がわかりやすい
> ・各行のプログラムが何を意図しているかわかりやすい
> ・何度も計算するものは変数を使用すると入力時間の短縮になる
> ・同じ計算を何度もするのはメンテナンスをするときに大変なので変数を使用する
>
> 以上が Dimを使うメリットです。
>
> 8778 : 小川慶一の回答 (2017-08-27 00:56:48)
> 受講生 さん:
>
> > Dimを使うことでマクロが作りやすくなる。
>
> ↑
> 人への説明としては間違いです。
> イイタイコトは分かりますが、だからと言って放置すると、別のページでの指摘のようなことのくり返しになりますので。。
>
> 第1章の変数について説明してる動画、レジュメ資料等を振り返り、お書きになった一文を修正してください。
マクロの書き方は
コピペ→一カ所書き換えたら動きのチェック→OK→次へ進む
→No→修正する
少しずつ進む意味が分かった。
> Dimを使うことでマクロが作りやすくなる。
↑
人への説明としては間違いです。
イイタイコトは分かりますが、だからと言って放置すると、別のページでの指摘のようなことのくり返しになりますので。。
第1章の変数について説明してる動画、レジュメ資料等を振り返り、お書きになった一文を修正してください。
[コンパイルエラー sub又はFunctionが定義されていません]
lnstrを入力した後、自動的に InStrに変換しなかった。何が原因か
ku = InStr(Range("c2").Value, "区") 正
②挿入→ 標準モジュール→ コードウインドーを開くと Option Explicit が表示されていない。
( 動画には Option Explicit が表示されている) Option Explicit の役割は何か
>① ku = lnstr(Range("c2").Value, "区") 誤
> [コンパイルエラー sub又はFunctionが定義されていません]
> lnstrを入力した後、自動的に InStrに変換しなかった。何が原因か
↑
instrのように見えて、lnstrになっています。小文字で示すと、先頭がiではなくて、l(エル)
関数名等を正しく綴るには、コツがあります。
関数名は、すべて小文字で書いてください。
そして、改行してカーソルがその行から離れた瞬間に、入力した関数名が大文字小文字の組み合わせになることを目視確認します。
> ku = InStr(Range("c2").Value, "区") 正
>②挿入→ 標準モジュール→ コードウインドーを開くと Option Explicit が表示されていない。
> ( 動画には Option Explicit が表示されている) Option Explicit の役割は何か
以下のページで解説している、「変数の宣言を強制する」のチェックを入れてください。
動画、12:47くらいから。
https://forum.pc5bai.com/lesson/page/9
問題なく設定できていれば、新しいモジュールを作成する都度、そのモジュールの先頭行に Option Explicit の文字列が自動的に挿入されていることでしょう。
Option Explicit の役割は、そのモジュールを、「変数の宣言を強制する」モードにすることです。
どんなメリットがあるのか?というところまでは基礎編では解説しません。基礎編の段階では、「おまじないとして、あると便利らしい」くらいの理解で十分です。
よろしく、お願いいたします。
順調と思いますよ。
マクロを書くときの全体の流れを身体にしっかり馴染ませてください。フォローアップの演習もおもしろいですよ。
>実践してみるとまだちょっと止まってしまったりしますが、面白くなってきました!!
Range("f2").Value = Left(Range("c2"), InStr(Range("c2"), "区"))
なんてしました。
次に先生の作ったもの
Range("f2").Value = Left(Range("c2").Value, ku)
これを見て思いました。最初自分で作った式の右辺
InStr(Range("c2"), "区")を
ku に変えればいいなと。
そうすると先生の式の右辺のValueは無くてもいいのでは?
実際、Valueを省いても動いて欲しいように動きました。
それでもValueを入れておくと後々役に立つとかで、入れたほうがいいのでしょうか?
変数を使う目的は、おおむねいかの3つです。
○可読性のため
○同じ計算の重複を避けるため
○くり返しの構文でのカウンターとして
.valueは必須というわけではありません。ただし、かなり微妙な理由でなんとかOKになっているだけです。
詳しくは以下。
http://www.exvba.com/blog/?p=2183
>なるほど。変数を使うと手間が省けるんですね。最初自分で作った時は律儀に
> Range("f2").Value = Left(Range("c2"), InStr(Range("c2"), "区"))
>なんてしました。
>
>次に先生の作ったもの
> Range("f2").Value = Left(Range("c2").Value, ku)
>
>これを見て思いました。最初自分で作った式の右辺
> InStr(Range("c2"), "区")を
> ku に変えればいいなと。
>
>そうすると先生の式の右辺のValueは無くてもいいのでは?
>実際、Valueを省いても動いて欲しいように動きました。
>それでもValueを入れておくと後々役に立つとかで、入れたほうがいいのでしょうか?
なるほど。
小人ちゃんは有能ですね。
これからは正しい指示書を書くよう心掛け、ある程度自由自在に操れるようになるまでは省略しないようにします。
>伊久間博之 さん:
>
>変数を使う目的は、おおむねいかの3つです。
>○可読性のため
>○同じ計算の重複を避けるため
>○くり返しの構文でのカウンターとして
>
>.valueは必須というわけではありません。ただし、かなり微妙な理由でなんとかOKになっているだけです。
>詳しくは以下。
>http://www.exvba.com/blog/?p=2183
コメントありがとうございます。
.value を省略して書いてもよいと言えば良いのですが、何故それで動いているのか?をきちんと理解しておくことが大切です。
ひきつづきよろしくお願いいたします。
>小川慶一 さん:
>
>なるほど。
>小人ちゃんは有能ですね。
>これからは正しい指示書を書くよう心掛け、ある程度自由自在に操れるようになるまでは省略しないようにします。
>
>>伊久間博之 さん:
>>
>>変数を使う目的は、おおむねいかの3つです。
>>○可読性のため
>>○同じ計算の重複を避けるため
>>○くり返しの構文でのカウンターとして
>>
>>.valueは必須というわけではありません。ただし、かなり微妙な理由でなんとかOKになっているだけです。
>>詳しくは以下。
>>http://www.exvba.com/blog/?p=2183
>
コピー貼り付けで少し手直し、ちょこちょこテストして完成に向かう、の感覚、についてです。それはこれから自分の書きたいことが前の行と似ている、ということを事前に見通しておくことが必要、ということがいえるのでしょうか。
よろしくお願いします。
こんにちは。
ご指摘ありがとうございます。
6:30の1分間くらいは、ちょっと支障がありますね。。(12:40くらいは、手元の環境では確認できませんでした)
作り直しできないか検討したいと思います。
> それはこれから自分の書きたいことが前の行と似ている、
> ということを事前に見通しておくことが必要、
> ということがいえるのでしょうか。
はい、そうですね。
「自分が何をしたいかが分かっている」→「それをどう実現するかの選択をできる」
というとき、この動画で話しているのは、後者のことです。
>こんにちは。動画再生で、6:30~1分間くらい、12:40くらい、に音声が聞き取りずらくなっています。全体の講義内容理解に支障は少ないかと思いますが、よろしければご確認ください。
>コピー貼り付けで少し手直し、ちょこちょこテストして完成に向かう、の感覚、についてです。それはこれから自分の書きたいことが前の行と似ている、ということを事前に見通しておくことが必要、ということがいえるのでしょうか。
>よろしくお願いします。