
この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。
このページへの投稿/コメント

受講生さんの投稿
(投稿ID: 5187)

受講生さんの投稿
(投稿ID: 5185)

小川慶一さんからのお返事
(コメントID: 7341)
よかったです。
ひきつづき、お楽しみください☆
> 見れました。ありがとうございます。

受講生さんの投稿
(投稿ID: 5184)
他の方の質問にあった
エクセルマクロ・VBA発展編2演習と回答は、
私も見れる講座でしょうか?
URLをクリックすると、
新しいどうか購入か購入済みの動画をみるというバナーが表示され、
購入済みの動画をクリックするとマイページになって見れません。

小川慶一さんからのお返事
(コメントID: 7339)
おはようございます。(お久しぶりです)
閲覧権限を付与しました。
とりいそぎ、どうぞよろしくお願いいたします。

受講生さんの投稿
(投稿ID: 4698)

受講生さんからのお返事
(コメントID: 6536)
いつもお世話になっております。
現在、発展編2の演習を行っており、解答を探す中でここに辿り着きました。
他の方の質問の中にもあった「エクセルマクロ・VBA発展編2演習と回答」をまずは確認しようと思ったのですが、以下URLをクリックするとトップページ(?)に飛んでしまいます。
https://forum.pc5bai.com/lesson/course/85
現在、この講座は閲覧不可でしょうか?

小川慶一さんからのお返事
(コメントID: 6540)
お世話になります。
さきほど、権限付与しました。ご確認ください。
とりいそぎ、よろしくお願いいたします。

受講生さんからのお返事
(コメントID: 6558)
早速ご返信頂きまして、ありがとうございます。
こちらを確認させて頂き、講座の理解度を深めます。
今後とも、よろしくお願い致します。

小川慶一さんからのお返事
(コメントID: 6559)
よろしくお願いいたします。
解答解説動画も、お楽しみいただければ、と思っております。
> 小川先生
>
> 早速ご返信頂きまして、ありがとうございます。
> こちらを確認させて頂き、講座の理解度を深めます。
> 今後とも、よろしくお願い致します。
>

rozario980さんの投稿
(投稿ID: 4577)
いつもお世話になっております。
発展編2のenshu1.xlsについての添削・質問はこちらで大丈夫でしょうか?

小川慶一さんからのお返事
(コメントID: 6311)
おはようございます。
「エクセルマクロ・VBA発展編2演習と回答」という講座があります。
https://forum.pc5bai.com/lesson/course/85
まずは、この講座と比べてみてください。
そのうえで解決しない件がありましたら、質問等受けつけます。
よろしく、お願いいたします。
> 小川先生
>
> いつもお世話になっております。
> 発展編2のenshu1.xlsについての添削・質問はこちらで大丈夫でしょうか?

受講生さんからのお返事
(コメントID: 6313)
返信ありがとうございます。
下記の講座があることを見逃していました。
まずはこの講座を見ながら答え合わせをしてみたいと思います。
視聴した上で、わからないことが出てきましたら改めて質問させていただきます。
> ゲストさん:
>
> おはようございます。
>
> 「エクセルマクロ・VBA発展編2演習と回答」という講座があります。
> https://forum.pc5bai.com/lesson/course/85
>
> まずは、この講座と比べてみてください。
> そのうえで解決しない件がありましたら、質問等受けつけます。
>
> よろしく、お願いいたします。
>
>
> > 小川先生
> >
> > いつもお世話になっております。
> > 発展編2のenshu1.xlsについての添削・質問はこちらで大丈夫でしょうか?
>

小川慶一さんからのお返事
(コメントID: 6314)
よろしくお願いします。
演習をやってみたうえで動画解説を観ていただけたのであれば、かなり理解が深まるのでは?と思います。
> 小川慶一さん:
>
> 返信ありがとうございます。
> 下記の講座があることを見逃していました。
> まずはこの講座を見ながら答え合わせをしてみたいと思います。
>
> 視聴した上で、わからないことが出てきましたら改めて質問させていただきます。
>
> > ゲストさん:
> >
> > おはようございます。
> >
> > 「エクセルマクロ・VBA発展編2演習と回答」という講座があります。
> > https://forum.pc5bai.com/lesson/course/85
> >
> > まずは、この講座と比べてみてください。
> > そのうえで解決しない件がありましたら、質問等受けつけます。
> >
> > よろしく、お願いいたします。
> >
> >
> > > 小川先生
> > >
> > > いつもお世話になっております。
> > > 発展編2のenshu1.xlsについての添削・質問はこちらで大丈夫でしょうか?
> >

ふんわりさんの投稿
(投稿ID: 4281)
ありがとうございます!

ふんわりさんの投稿
(投稿ID: 4278)
Chap02-61のコードですが、「Call」を付けずに他のサブプロシージャ―「Sub ExeKensaku()」を呼び出す事が出来るのは画期的でした。
それならば、「Call」を付ける時とそうでない時の違い、使い分けというのはあるのでしょうか?ただ単に、どちらでも可能という事でしょうか?

小川慶一さんからのお返事
(コメントID: 5862)
> すみません、配列の内容とは少しそれてしまうかもしれませんが、
ぜんぜん、よいですよ (^^
他言語では、プロシージャの呼び出しでは Call のような特別なキーワードを必要としないのが一般的です。
>ただ単に、どちらでも可能という事でしょうか?
僕は Call をつけない派です。
Call がなくて不便は感じません。 Call がなくても、見た瞬間、「他プロシージャを呼び出している」と分かりますし。

平吹 敦史さんの投稿
(投稿ID: 2932)
テキストP41、Chap02-61のEraseステートメントの下記例題ですが、
Erase stAryの一文があってもなくても結果は一緒でした。
ステップインで追いかけましたが、いまいちわかりませんでした。
どうも、stAry(cAry)のcAry=0で例えば渋谷区の配列の中身が世田谷区の中身に上書きされた時点で、
それ以降の配列はクリアになるようでした。
なので、あえてErase stAryの一文が必要なのでしょうか?
最初は、前の配列がそのまま残っているので、クリアにしないと不要な配列が書き出されてしまうイメージでした。データ数が一緒なら上書きされて問題ないが、データ数が少ないと不要なデータが書き出されてしまうイメージです。
ですが、結果が違ったので???状態です。
ご教授願います。
Option Explicit
Dim stTgt As String '検索対象の区
Dim stAry() As String '配列
Dim cTo As Long 'データ書き出し先の行
Sub ListUpBukken()
Columns("I:J").ClearContents
cTo = 2
stTgt = "渋谷区"
ExeKensaku
stTgt = "世田谷区"
ExeKensaku
stTgt = "目黒区"
ExeKensaku
stTgt = "港区"
ExeKensaku
stTgt = "品川区"
ExeKensaku
End Sub
Sub ExeKensaku()
Dim cFm As Long '元データ表でForNext構文が使う変数
Dim cMx As Long '元データ表の最大行
Dim cAry As Long '配列のインデックス用
cMx = Range("A65536").End(xlUp).Row
cAry = 0
Erase stAry・・・・・・これをとっても結果は同じなる?
For cFm = 2 To cMx
If Range("C" & cFm).Value = stTgt Then
ReDim Preserve stAry(cAry)
stAry(cAry) = Range("F" & cFm).Value
cAry = cAry + 1
End If
Next
Range("I" & cTo).Value = stTgt & "の物件は " & UBound(stAry) + 1 & "件ヒットしました!"
cTo = cTo + 1
For cFm = LBound(stAry) To UBound(stAry)
Range("J" & cTo).Value = stAry(cFm)
cTo = cTo + 1
Next
cTo = cTo + 1
End Sub

ゲストさんからのお返事
(コメントID: 4405)
何もない状態から再スタートするか、上書きするか、
という違いがありますね。
ReDim Preserve stAry(cAry) '[1]
stAry(cAry) = Range("F" & cFm).Value '[2]
で、最初に実行するとき、[1]の段階で、 cAry = 0 です。
そして、直後の[2]で、stAry(0) に値を格納しています。
ところで、 Erase stAry で配列 stAry を初期化しないと、[1] の直後の段階では、前回投入した値が stAry(0) にまだ残っています。
Erase stAry で配列 stAry を初期化したあとだと、 [1] の直後の段階では、 stAry(0) にまだ何も入っていません。
ここで、「直後に上書きするんだから、値が入っててもいいじゃない」と思うか、「すべてスッキリした状態で再スタートのほうが気持ちいい!」と思うか?の違いがあります。
好みの問題に聞こえるかもしれません。
しかし、後者のほうがより安全なので、僕は、後者の方法を推したいですね。

平吹 敦史さんからのお返事
(コメントID: 4406)
お世話様です。
もう少し突っ込んだ質問です。
前回投入した値の数が7つ。(事例でいうと世田谷区)
stAry(0)
stAry(1)
stAry(2)
stAry(3)
stAry(4)
stAry(5)
stAry(6)
次に投入した値が3つ。(目黒区)
stAry(0)・・・上書きされる
stAry(1)・・・上書きされる?
stAry(2)・・・上書きされる?
Erase stAryで初期化しなくとも、世田谷区の下記4つが
残らないのはなぜでしょうか?
stAry(3)
stAry(4)
stAry(5)
stAry(6)
そこの仕組みがどうしても理解できません。
私の頭の理解では、preserveなので、初期化してない限りは、
そのまま残って、書き出されてしまうはずなんですが・・・
なので、ますますEraseの意味がピンとこないのです。
面倒な質問ですいません。
>平吹 敦史 さん:
>
>何もない状態から再スタートするか、上書きするか、
>という違いがありますね。
>
>
ReDim Preserve stAry(cAry) '[1]
>stAry(cAry) = Range("F" & cFm).Value '[2]
>
>で、最初に実行するとき、[1]の段階で、 cAry = 0 です。
>そして、直後の[2]で、stAry(0) に値を格納しています。
>
>ところで、 Erase stAry で配列 stAry を初期化しないと、[1] の直後の段階では、前回投入した値が stAry(0) にまだ残っています。
>
>Erase stAry で配列 stAry を初期化したあとだと、 [1] の直後の段階では、 stAry(0) にまだ何も入っていません。
>
>ここで、「直後に上書きするんだから、値が入っててもいいじゃない」と思うか、「すべてスッキリした状態で再スタートのほうが気持ちいい!」と思うか?の違いがあります。
>
>好みの問題に聞こえるかもしれません。
>しかし、後者のほうがより安全なので、僕は、後者の方法を推したいですね。
>

ゲストさんからのお返事
(コメントID: 4407)
小川慶一 さん:
これで、どうでしょうか。この図で、理解の整理、進みますかね。
https://www.dropbox.com/s/xtmuutquwb9x4gu/redimpreserveimage.JPG?dl=0

平吹 敦史さんからのお返事
(コメントID: 4408)
なるほどです!
仕組みを勘違いしていました。
丁寧にありがとうございました。
>平吹 敦史 さん:
>
>小川慶一 さん:
>
>これで、どうでしょうか。この図で、理解の整理、進みますかね。
>https://www.dropbox.com/s/xtmuutquwb9x4gu/redimpreserveimage.JPG?dl=0
>

ゲストさんからのお返事
(コメントID: 4411)
よかったです。
行き詰まることがあれば、また、いつでもどうぞ☆
学習記録としてメモを残す
※メモを残すにはこの講座の利用権限が必要です。
受講生さんの投稿
(投稿ID: 5186)