Option Explicit
Dim mx As Long
Sub main()
mx = Range("A" & Rows.Count).End(xlUp).Row
NarabeG
Ranking
NarabeA
End Sub
Sub NarabeG()
Range("A1:H" & mx).CurrentRegion.Sort key1:=Range("G1"), order1:=xlDescending, Header:=xlYes
End Sub
Sub Ranking()
Range("H2").Value = 1
Range("H3").Value = 2
Range("H2:H3").AutoFill Destination:=Range("H2:H" & mx)
End Sub
Sub NarabeA()
Range("A1:H" & mx).CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
End Sub
Module:m02_Hikisu
Option Explicit
Sub main()
Dim mx As Long
mx = Range("A" & Rows.Count).End(xlUp).Row
NarabeG mx
Ranking mx
NarabeA mx
End Sub
Sub NarabeG(saigo As Long)
Range("A1:H" & saigo).CurrentRegion.Sort key1:=Range("G1"), order1:=xlDescending, Header:=xlYes
End Sub
Sub Ranking(cLast As Long)
Range("H2").Value = 1
Range("H3").Value = 2
Range("H2:H3").AutoFill Destination:=Range("H2:H" & cLast)
End Sub
Sub NarabeA(cMax As Long)
Range("A1:H" & cMax).CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
End Sub
Option Explicit
> Dim mx As Long
> Sub main()
> mx = Range("A" & Rows.Count).End(xlUp).Row
> NarabeG
> Ranking
> NarabeA
> End Sub
> Sub NarabeG()
> Range("A1:H" & mx).CurrentRegion.Sort key1:=Range("G1"), order1:=xlDescending, Header:=xlYes
> End Sub
> Sub Ranking()
> Range("H2").Value = 1
> Range("H3").Value = 2
> Range("H2:H3").AutoFill Destination:=Range("H2:H" & mx)
> End Sub
> Sub NarabeA()
> Range("A1:H" & mx).CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
> End Sub
> > Module:m02_Hikisu >
Option Explicit
> Sub main()
> Dim mx As Long
> mx = Range("A" & Rows.Count).End(xlUp).Row
>
> NarabeG mx
> Ranking mx
> NarabeA mx
> End Sub
> Sub NarabeG(saigo As Long)
> Range("A1:H" & saigo).CurrentRegion.Sort key1:=Range("G1"), order1:=xlDescending, Header:=xlYes
> End Sub
> Sub Ranking(cLast As Long)
> Range("H2").Value = 1
> Range("H3").Value = 2
> Range("H2:H3").AutoFill Destination:=Range("H2:H" & cLast)
> End Sub
> Sub NarabeA(cMax As Long)
> Range("A1:H" & cMax).CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
> End Sub
受講生さんの投稿
(投稿ID: 3862)
どこで出てきたお話でしょうか?
出てきてたのに見逃してたかなと思いまして。
また、メンテナンスをするときに、
モジュールレベル変数は変更箇所が多い、というお話ですが、
Module2のほうも、(動画では触れられていませんが)
一番下のsub soujiirai2の部分も変更しなければならないと思うので
結局、変更箇所は同数になるような気がするのですが
違いますでしょうか?
小川慶一さんのコメント
(コメントID: 5390)
おはようございます。
> モジュールレベル変数というのは、個人的には初めて見た変数なのですが、
> どこで出てきたお話でしょうか?
> 出てきてたのに見逃してたかなと思いまして。
発展編1の第5章で登場します。
https://forum.pc5bai.com/lesson/course/29
> また、メンテナンスをするときに、
> モジュールレベル変数は変更箇所が多い、というお話ですが、
> Module2のほうも、(動画では触れられていませんが)
> 一番下のsub soujiirai2の部分も変更しなければならないと思うので
> 結局、変更箇所は同数になるような気がするのですが
> 違いますでしょうか?
以下の二つのモジュールを比較してみてください。
これは、以下のページで紹介する課題を、モジュールレベル変数や引数つきプロシージャを使って解いているプログラムです。
https://forum.pc5bai.com/lesson/page/20/
Module:m01_ModuleLevel
Module:m02_Hikisu
前者では、mxという変数を用意して、すべてのプロシージャがその変数を参照しています。
これは、「すべてのプロシージャが同じ変数名を使わなくてならない」という意味で制約になります。
例えば、 Sub Ranking() 内で最後の行を指定する変数の名前を変えようと思ったら、モジュールレベル変数も、そして、そのモジュールレベル変数を利用しているすべてのプロシージャ内での変数の名前も、すべて変えなくてはなりません。
一方、後者では、各々のプロシージャが好きな変数名を利用しています。
この場合、各プロシージャ内でつけられた変数名がどうなろうとお互いに知ったこっちゃありません。
Sub Ranking() 内で最後の行を指定する変数の名前を変えたとしても、他のプロシージャには変更はまったく不要です。
今はまだ小さいプログラムなので、ピンとこないかもしれませんが…。
これが、より大きなプログラムになって、1画面では表示しきれない規模になったとき。
どちらの方がメンテナンス性が高いかと言ったら、後者です。
この説明で、ご理解いただけたでしょうか?
受講生さんのコメント
(コメントID: 5395)
分かりました。
発展編1は受講してなかったので、初めてでした。
それと、具体的なサンプルもありがとうございました。
なんとなく分かったような?感じはしますが
また深めてみます。
ただ、動画の中で、なぜ一番下のサブプロシージャは修正しなくていいのだろう?と、修正が少なくて済むという話は分かりずらかったです。
> 受講生 さん:
>
> おはようございます。
>
> > モジュールレベル変数というのは、個人的には初めて見た変数なのですが、
> > どこで出てきたお話でしょうか?
> > 出てきてたのに見逃してたかなと思いまして。
>
> 発展編1の第5章で登場します。
> https://forum.pc5bai.com/lesson/course/29
>
> > また、メンテナンスをするときに、
> > モジュールレベル変数は変更箇所が多い、というお話ですが、
> > Module2のほうも、(動画では触れられていませんが)
> > 一番下のsub soujiirai2の部分も変更しなければならないと思うので
> > 結局、変更箇所は同数になるような気がするのですが
> > 違いますでしょうか?
>
> 以下の二つのモジュールを比較してみてください。
> これは、以下のページで紹介する課題を、モジュールレベル変数や引数つきプロシージャを使って解いているプログラムです。
> https://forum.pc5bai.com/lesson/page/20/
>
> Module:m01_ModuleLevel
>
>
> Module:m02_Hikisu
>
>
> 前者では、mxという変数を用意して、すべてのプロシージャがその変数を参照しています。
> これは、「すべてのプロシージャが同じ変数名を使わなくてならない」という意味で制約になります。
>
> 例えば、 Sub Ranking() 内で最後の行を指定する変数の名前を変えようと思ったら、モジュールレベル変数も、そして、そのモジュールレベル変数を利用しているすべてのプロシージャ内での変数の名前も、すべて変えなくてはなりません。
>
> 一方、後者では、各々のプロシージャが好きな変数名を利用しています。
> この場合、各プロシージャ内でつけられた変数名がどうなろうとお互いに知ったこっちゃありません。
> Sub Ranking() 内で最後の行を指定する変数の名前を変えたとしても、他のプロシージャには変更はまったく不要です。
>
> 今はまだ小さいプログラムなので、ピンとこないかもしれませんが…。
> これが、より大きなプログラムになって、1画面では表示しきれない規模になったとき。
> どちらの方がメンテナンス性が高いかと言ったら、後者です。
>
> この説明で、ご理解いただけたでしょうか?
小川慶一さんのコメント
(コメントID: 5398)
> ただ、動画の中で、なぜ一番下のサブプロシージャは修正しなくていいのだろう?と、修正が少なくて済むという話は分かりずらかったです。
動画で示したように、実際に変数の名前を変えて動作させてみてください。それがおすすめです。
一行一行、かみしめるようにステップイン実行すればまた何か気づくかもしれません。
ただ、こういうのは、ある程度ボリュームのあるプログラムを書いた経験がないとなかなかピンとこないかもしれません。
(もしそんなことないよ、十分な経験があるよということであれば、ごめんなさい)
もしピンと来ないということでしたら、今の段階では不要な知識ということかもしれません。
以下の動画以降で「カレーライスとパソコン」という話をしています。
https://forum.pc5bai.com/lesson/page/891
凝ったスパイスのオリジナルカレーの作り方の話は、カレーをイチから作った経験が何度かないと聞いてもピンときません。
Excelマクロも同じで、実装経験なしで理解だけを進めるというのはどうしても限界があります。
かつての僕もそうでした。でも、そういう話でも、聞くだけ聞いておく価値はやはりあると思います。幸いこのオンライン講座は何度も復習できる環境にありますので、納得いくまで、いろいろチャレンジしながら折々振り返っていただければと思います。
> 小川慶一さん:
> 分かりました。
> 発展編1は受講してなかったので、初めてでした。
>
> それと、具体的なサンプルもありがとうございました。
> なんとなく分かったような?感じはしますが
> また深めてみます。
> ただ、動画の中で、なぜ一番下のサブプロシージャは修正しなくていいのだろう?と、修正が少なくて済むという話は分かりずらかったです。
>
>
>
> > 受講生 さん:
> >
> > おはようございます。
> >
> > > モジュールレベル変数というのは、個人的には初めて見た変数なのですが、
> > > どこで出てきたお話でしょうか?
> > > 出てきてたのに見逃してたかなと思いまして。
> >
> > 発展編1の第5章で登場します。
> > https://forum.pc5bai.com/lesson/course/29
> >
> > > また、メンテナンスをするときに、
> > > モジュールレベル変数は変更箇所が多い、というお話ですが、
> > > Module2のほうも、(動画では触れられていませんが)
> > > 一番下のsub soujiirai2の部分も変更しなければならないと思うので
> > > 結局、変更箇所は同数になるような気がするのですが
> > > 違いますでしょうか?
> >
> > 以下の二つのモジュールを比較してみてください。
> > これは、以下のページで紹介する課題を、モジュールレベル変数や引数つきプロシージャを使って解いているプログラムです。
> > https://forum.pc5bai.com/lesson/page/20/
> >
> > Module:m01_ModuleLevel
> >
> >
> > Module:m02_Hikisu
> >
> >
> > 前者では、mxという変数を用意して、すべてのプロシージャがその変数を参照しています。
> > これは、「すべてのプロシージャが同じ変数名を使わなくてならない」という意味で制約になります。
> >
> > 例えば、 Sub Ranking() 内で最後の行を指定する変数の名前を変えようと思ったら、モジュールレベル変数も、そして、そのモジュールレベル変数を利用しているすべてのプロシージャ内での変数の名前も、すべて変えなくてはなりません。
> >
> > 一方、後者では、各々のプロシージャが好きな変数名を利用しています。
> > この場合、各プロシージャ内でつけられた変数名がどうなろうとお互いに知ったこっちゃありません。
> > Sub Ranking() 内で最後の行を指定する変数の名前を変えたとしても、他のプロシージャには変更はまったく不要です。
> >
> > 今はまだ小さいプログラムなので、ピンとこないかもしれませんが…。
> > これが、より大きなプログラムになって、1画面では表示しきれない規模になったとき。
> > どちらの方がメンテナンス性が高いかと言ったら、後者です。
> >
> > この説明で、ご理解いただけたでしょうか?
受講生さんのコメント
(コメントID: 5399)
すいません、そういう意味ではなくて、
動画の中で、「ここは修正が不必要」ということを、
ひとこと言ってくれれれば分かりやすかったのになあという意味です。
それだけで、そうなのかと思えますので。
> 受講生 さん:
>
> > ただ、動画の中で、なぜ一番下のサブプロシージャは修正しなくていいのだろう?と、修正が少なくて済むという話は分かりずらかったです。
>
> 動画で示したように、実際に変数の名前を変えて動作させてみてください。それがおすすめです。
> 一行一行、かみしめるようにステップイン実行すればまた何か気づくかもしれません。
>
> ただ、こういうのは、ある程度ボリュームのあるプログラムを書いた経験がないとなかなかピンとこないかもしれません。
> (もしそんなことないよ、十分な経験があるよということであれば、ごめんなさい)
>
> もしピンと来ないということでしたら、今の段階では不要な知識ということかもしれません。
>
> 以下の動画以降で「カレーライスとパソコン」という話をしています。
> https://forum.pc5bai.com/lesson/page/891
>
> 凝ったスパイスのオリジナルカレーの作り方の話は、カレーをイチから作った経験が何度かないと聞いてもピンときません。
> Excelマクロも同じで、実装経験なしで理解だけを進めるというのはどうしても限界があります。
> かつての僕もそうでした。でも、そういう話でも、聞くだけ聞いておく価値はやはりあると思います。幸いこのオンライン講座は何度も復習できる環境にありますので、納得いくまで、いろいろチャレンジしながら折々振り返っていただければと思います。
>
>
>
>
>
>
> > 小川慶一さん:
> > 分かりました。
> > 発展編1は受講してなかったので、初めてでした。
> >
> > それと、具体的なサンプルもありがとうございました。
> > なんとなく分かったような?感じはしますが
> > また深めてみます。
> > ただ、動画の中で、なぜ一番下のサブプロシージャは修正しなくていいのだろう?と、修正が少なくて済むという話は分かりずらかったです。
> >
> >
> >
> > > 受講生 さん:
> > >
> > > おはようございます。
> > >
> > > > モジュールレベル変数というのは、個人的には初めて見た変数なのですが、
> > > > どこで出てきたお話でしょうか?
> > > > 出てきてたのに見逃してたかなと思いまして。
> > >
> > > 発展編1の第5章で登場します。
> > > https://forum.pc5bai.com/lesson/course/29
> > >
> > > > また、メンテナンスをするときに、
> > > > モジュールレベル変数は変更箇所が多い、というお話ですが、
> > > > Module2のほうも、(動画では触れられていませんが)
> > > > 一番下のsub soujiirai2の部分も変更しなければならないと思うので
> > > > 結局、変更箇所は同数になるような気がするのですが
> > > > 違いますでしょうか?
> > >
> > > 以下の二つのモジュールを比較してみてください。
> > > これは、以下のページで紹介する課題を、モジュールレベル変数や引数つきプロシージャを使って解いているプログラムです。
> > > https://forum.pc5bai.com/lesson/page/20/
> > >
> > > Module:m01_ModuleLevel
> > >
> > >
> > > Module:m02_Hikisu
> > >
> > >
> > > 前者では、mxという変数を用意して、すべてのプロシージャがその変数を参照しています。
> > > これは、「すべてのプロシージャが同じ変数名を使わなくてならない」という意味で制約になります。
> > >
> > > 例えば、 Sub Ranking() 内で最後の行を指定する変数の名前を変えようと思ったら、モジュールレベル変数も、そして、そのモジュールレベル変数を利用しているすべてのプロシージャ内での変数の名前も、すべて変えなくてはなりません。
> > >
> > > 一方、後者では、各々のプロシージャが好きな変数名を利用しています。
> > > この場合、各プロシージャ内でつけられた変数名がどうなろうとお互いに知ったこっちゃありません。
> > > Sub Ranking() 内で最後の行を指定する変数の名前を変えたとしても、他のプロシージャには変更はまったく不要です。
> > >
> > > 今はまだ小さいプログラムなので、ピンとこないかもしれませんが…。
> > > これが、より大きなプログラムになって、1画面では表示しきれない規模になったとき。
> > > どちらの方がメンテナンス性が高いかと言ったら、後者です。
> > >
> > > この説明で、ご理解いただけたでしょうか?
小川慶一さんのコメント
(コメントID: 5402)
コメントありがとうございます。
ともあれ、ここは解説をさらに追加したほうがよさそうですね。
このページでという事ではありませんが、いずれにせよよくいただく質問ではあるので、口座本編の中でさらにしっかり解説しておきたいと思っています。
ひきつづき、どうぞよろしくお願いいたします。
> 小川慶一さん:
> すいません、そういう意味ではなくて、
> 動画の中で、「ここは修正が不必要」ということを、
> ひとこと言ってくれれれば分かりやすかったのになあという意味です。
>
> それだけで、そうなのかと思えますので。
>
> > 受講生 さん:
> >
> > > ただ、動画の中で、なぜ一番下のサブプロシージャは修正しなくていいのだろう?と、修正が少なくて済むという話は分かりずらかったです。
> >
> > 動画で示したように、実際に変数の名前を変えて動作させてみてください。それがおすすめです。
> > 一行一行、かみしめるようにステップイン実行すればまた何か気づくかもしれません。
> >
> > ただ、こういうのは、ある程度ボリュームのあるプログラムを書いた経験がないとなかなかピンとこないかもしれません。
> > (もしそんなことないよ、十分な経験があるよということであれば、ごめんなさい)
> >
> > もしピンと来ないということでしたら、今の段階では不要な知識ということかもしれません。
> >
> > 以下の動画以降で「カレーライスとパソコン」という話をしています。
> > https://forum.pc5bai.com/lesson/page/891
> >
> > 凝ったスパイスのオリジナルカレーの作り方の話は、カレーをイチから作った経験が何度かないと聞いてもピンときません。
> > Excelマクロも同じで、実装経験なしで理解だけを進めるというのはどうしても限界があります。
> > かつての僕もそうでした。でも、そういう話でも、聞くだけ聞いておく価値はやはりあると思います。幸いこのオンライン講座は何度も復習できる環境にありますので、納得いくまで、いろいろチャレンジしながら折々振り返っていただければと思います。