条件に一致するデータを別シートに転記する

演習問題テーマ:条件に一致するデータを別シートに転記する

2つの表がそれぞれ別のシートにあるパターン。

調べているシート、書き出し先のシートが異なります。このような複数シートのときはシートを指定するのがポイント。調べているシートに限らず書き出し先のシートも含めすべての値のシートを指定する習慣をつけてください。マクロを実行するときにどこのシートを開いていてもきちんと動くマクロをかけるように。また、シート間の移動はtrl+PageUP,Ctrl+PageDownでスムーズに。2つの表がある場合に変数を2つつくるパターンは前回と同じ。変数をつくるときは、どんな目的で作った変数かがわかる変数をつくると便利です。

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

この講座を含む定額コースや購入の詳細については、講座トップページの「利用方法」を御覧ください。

学習記録としてメモを残す

完全に理解できた
まあまあ理解できた
ふつう
あまり理解できてない
さっぱり分からない

※メモを残すにはこの講座の利用権限が必要です。

質問や感想を投稿する

とても満足 満足 普通 不満 とても不満

ユーザ名を使う ニックネームを使う 匿名で投稿

※投稿に必要な権限がありません。

このページへの投稿/コメント

投稿ID: 5117 受講生さんの投稿
小川慶一 様
この度はご返信ありがとうございます。
早速ですが、エクセルマクロ・VBA基礎編フォローアップ ベーシックの問題に取り掛かりました。
しかし、何度解いてもよくわからない点があります。

★【動画6】 条件に一致するデータを別シートに転記する で例えますと、
Sub ichi()

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets("元データ").Cells(i, 9) > 100 Then
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'ID
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計
k = k + 1
End If
Next

End Sub
このような状態です。
解けてはいますし、回答を見ても正しいようなのですが、
k = k + 1の位置にいつも戸惑ってしまうのです。

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets("元データ").Cells(i, 9) > 100 Then
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'ID
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計
①k = k + 1
End If
     ②k = k + 1
Next

End Sub

①の状態が正しいというのはif endの中に入れておくというルールのような形で覚えてしまっている状態です。
最初に書いた時点では②の位置に書いてしまうのです。
そしてエラーが出て①の位置に戻しています。
ハナコステップで書いているのですが…何度書いても分かりません。

原因と致しましては、以下のように考えているからだと思うのですが、
そもそも文の読み方が正しくないのでしょうか…
ご教示頂けますと幸いです。

Dim i As Long 'iを宣言します
Dim k As Long 'kを宣言します
k = 9 'kは9です。
For i = 4 To 13 'iは4です(1周目時点)
If Worksheets("元データ").Cells(i, 9) > 100 Then 'もしも元データのi4(1周目時点)が100を超えていたら
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'IDをコピー
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前コピー
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計コピー
End If 'K9の値に入れるi4が調べ終わりました
     ②k = k + 1 'では次(i=5)に進む前にコピー先のセルも動かします
Next '(i=5)に進みます(forに戻ります)

End Sub
投稿日時: 2021年04月15日 22時47分15秒
コメントID: 7236 小川慶一さんからのお返事
受講生 さん:

こんにちは。

> そもそも文の読み方が正しくないのでしょうか…

結論から述べると、文の読み方が正しくないです。

エクセルVBAでのセルの指定方法として、RangeのほかにCellsもありますね。
Cells(row, column) の構文で、上からrow行目、左からcolumn列目のセルを指定できます。

row, columnの指定には、数値を使います。(他の方法もありますがオフトピなのでその他の方法についてはここでは紹介しません)
また、変数を使ってrow, columnを指定することもできます。

たとえば、 k = 5 のとき、 Cells(k, 3) は、左上から数えて、「5行目かつ3列目」のセルを指します。

Sub sample1()
    Dim k
    k = 5
    Cells(k, 3).Value = 1 'セルC5に1と入力されます
End Sub

また、変数の値は、何度でも上書きできます。

以下では、[2], [3], [4] で、それぞれ、変数kに値を入れ直しています。

Sub sample2()
    Dim k
    k = 5 '[1]
    Cells(k, 3).Value = 1
    
    k = 7 '[2]
    Cells(k, 3).Value = 2

    k = 10 '[3]
    Cells(k, 3).Value = 3

    k = 11 '[4]
    Cells(k, 3).Value = 4
End Sub

sample2のプログラムは、[2], [3], [4] のそれぞれを実行する直前に変数kに入っている値を利用して、以下のように書くこともできます。

Sub sample3()
    Dim k
    k = 5 '[1]
    Cells(k, 3).Value = 1
    
    k = k + 2 '[2]
    Cells(k, 3).Value = 2

    k = k + 3 '[3]
    Cells(k, 3).Value = 3

    k = k + 1 '[4]
    Cells(k, 3).Value = 4
End Sub

ここまで理解に不足はないでしょうか。

理解に不足がないという前提で述べると、以下はあきらかにおかしいですね。

k = k + 1 'では次(i=5)に進む前にコピー先のセルも動かします

基礎編講座本編のどこでも、「コピー先のセルを動かす」という機能を持つコードを紹介したことはありません。

> 解けてはいますし、回答を見ても正しいようなのですが、
> k = k + 1の位置にいつも戸惑ってしまうのです。

めちゃくちゃシンプルに言うと、 k= k + 1 の位置があるべきなのは、それがあるべき場所です。

逆に言うとあるべき場所にない場合は、期待(演習の意図)とは異なる結果になります。

理解が不足していると感じられるようでしたら、演習より簡単なコードを書いて実際に動作確認をされることをおすすめします。
(ステップイン実行、[F8]にて、一行一行、動作を確かめつつ)

その際には、あえておかしな位置に置き換えて動作させ、どんな結果になるか観察してみてください。
理系科目の学習でいちばん良いのは、自分で実験を設計して、自分で実験して、結果を検証することです。


あとは、より簡単な課題を解いてみること。
たとえば以下です。

○本課題の前段階。同一シート内の別表に転記する
https://forum.pc5bai.com/lesson/page/144

○さらに前段階。出現回数を数える。(直前に変数に入っていた値を使ってその変数に入る値を決める部分は同一。かつ、出力先の指定がないだけ本課題より容易です)
https://forum.pc5bai.com/lesson/page/150

これらの課題を、各行のコードが指すものを正確に説明しつつステップイン実行([F8])できるか?
あえて間違ったコードを書いて実行し、期待通りの間違った結果を得られるか?その間違いの理由を、講座で学習した言葉を使ってしっかりと説明できるか?試してみてください。

これらができるようになれば、自ずと、今回の理解不足だった点についても理解できるでしょう。

完成形のコードの構造が理解できない、コード内の特定の行の機能が理解できないという場合は、それ以前(たいてい、1段階前ではなく、2段階、3段階以上前)に学んだはずの何かが抜け落ちている場合が多いです。
(一般論を容易に言えるものではありませんが、対面講座も含めて多くの受講生の方をサポートしていての所見です)

講座で配布したマインドマップも全体を見直し、抜け落ちている点がないか点検してみてください。
コメント日時: 2021年04月16日 00時40分59秒
コメントID: 7237 kotimerさんからのお返事
小川慶一様

アドバイスありがとうございました。
教えて頂いた問題は何度も解いていましたが、
もはやそういう順序で書いていくと頭に入ってしまっていたので、直接コードをただ書いて学習するのではなく、どういう手順で動かしたいか紙に書き出してみました。
実行もF8で少しずつ見返しては紙との差を確認したところ、動画5で気づきました。
if文でture時でのみ実行されるためにはEndifの前にk=k+1を入れないといけないと。
動画4でも同様にcntの値(集計値を入れる)はif文の処理が終わった後にしないと余計な処理が増えるなど分かりました。曖昧な手順のように覚えていてもいずれ応用問題で全く分からなくなりそうなので、時間をかけてしっかり理解できるよう頑張ります。
ひとまず先日質問させていただいた問題に再トライします!
> 受講生 さん:
>
> こんにちは。
>
> > そもそも文の読み方が正しくないのでしょうか…
>
> 結論から述べると、文の読み方が正しくないです。
>
> エクセルVBAでのセルの指定方法として、RangeのほかにCellsもありますね。
> Cells(row, column) の構文で、上からrow行目、左からcolumn列目のセルを指定できます。
>
> row, columnの指定には、数値を使います。(他の方法もありますがオフトピなのでその他の方法についてはここでは紹介しません)
> また、変数を使ってrow, columnを指定することもできます。
>
> たとえば、 k = 5 のとき、 Cells(k, 3) は、左上から数えて、「5行目かつ3列目」のセルを指します。
>
>
Sub sample1()
>     Dim k
>     k = 5
>     Cells(k, 3).Value = 1 'セルC5に1と入力されます
> End Sub
>
> また、変数の値は、何度でも上書きできます。
>
> 以下では、[2], [3], [4] で、それぞれ、変数kに値を入れ直しています。
>
>
Sub sample2()
>     Dim k
>     k = 5 '[1]
>     Cells(k, 3).Value = 1
>     
>     k = 7 '[2]
>     Cells(k, 3).Value = 2
> 
>     k = 10 '[3]
>     Cells(k, 3).Value = 3
> 
>     k = 11 '[4]
>     Cells(k, 3).Value = 4
> End Sub
> 
>
> sample2のプログラムは、[2], [3], [4] のそれぞれを実行する直前に変数kに入っている値を利用して、以下のように書くこともできます。
>
>
Sub sample3()
>     Dim k
>     k = 5 '[1]
>     Cells(k, 3).Value = 1
>     
>     k = k + 2 '[2]
>     Cells(k, 3).Value = 2
> 
>     k = k + 3 '[3]
>     Cells(k, 3).Value = 3
> 
>     k = k + 1 '[4]
>     Cells(k, 3).Value = 4
> End Sub
>
> ここまで理解に不足はないでしょうか。
>
> 理解に不足がないという前提で述べると、以下はあきらかにおかしいですね。
>
> k = k + 1 'では次(i=5)に進む前にコピー先のセルも動かします
>
> 基礎編講座本編のどこでも、「コピー先のセルを動かす」という機能を持つコードを紹介したことはありません。
>
> > 解けてはいますし、回答を見ても正しいようなのですが、
> > k = k + 1の位置にいつも戸惑ってしまうのです。
>
> めちゃくちゃシンプルに言うと、 k= k + 1 の位置があるべきなのは、それがあるべき場所です。
>
> 逆に言うとあるべき場所にない場合は、期待(演習の意図)とは異なる結果になります。
>
> 理解が不足していると感じられるようでしたら、演習より簡単なコードを書いて実際に動作確認をされることをおすすめします。
> (ステップイン実行、[F8]にて、一行一行、動作を確かめつつ)
>
> その際には、あえておかしな位置に置き換えて動作させ、どんな結果になるか観察してみてください。
> 理系科目の学習でいちばん良いのは、自分で実験を設計して、自分で実験して、結果を検証することです。
>
>
> あとは、より簡単な課題を解いてみること。
> たとえば以下です。
>
> ○本課題の前段階。同一シート内の別表に転記する
> https://forum.pc5bai.com/lesson/page/144
>
> ○さらに前段階。出現回数を数える。(直前に変数に入っていた値を使ってその変数に入る値を決める部分は同一。かつ、出力先の指定がないだけ本課題より容易です)
> https://forum.pc5bai.com/lesson/page/150
>
> これらの課題を、各行のコードが指すものを正確に説明しつつステップイン実行([F8])できるか?
> あえて間違ったコードを書いて実行し、期待通りの間違った結果を得られるか?その間違いの理由を、講座で学習した言葉を使ってしっかりと説明できるか?試してみてください。
>
> これらができるようになれば、自ずと、今回の理解不足だった点についても理解できるでしょう。
>
> 完成形のコードの構造が理解できない、コード内の特定の行の機能が理解できないという場合は、それ以前(たいてい、1段階前ではなく、2段階、3段階以上前)に学んだはずの何かが抜け落ちている場合が多いです。
> (一般論を容易に言えるものではありませんが、対面講座も含めて多くの受講生の方をサポートしていての所見です)
>
> 講座で配布したマインドマップも全体を見直し、抜け落ちている点がないか点検してみてください。
>
コメント日時: 2021年04月16日 22時46分08秒
コメントID: 7239 小川慶一さんからのお返事
kotimerさん:

こんにちは。

詳しい報告、ありがとうございます。

どんな感じで復習されたのか、よく理解できました。
文面から、よいご経験をされたのではないかと感じています。

また行き詰まりそうになったらご質問/ご相談ください。


> もはやそういう順序で書いていくと頭に入ってしまっていたので

広い意味では、最終的にはそんな状態になります。
たとえば、僕でしたら、基礎編ベーシックの問題であれば、見た瞬間に頭の中で手順が再現されて、あとは手が淡々と追いついていくだけです。

ただ、「もはやそういう順序で書いていくと頭に入ってしまって」はいるのですが、まだ慣れていない方と大きく異るのは、個別の作業に対する理解度です。
ここは、実装を何度も体験しつつ、理論を何度も復習しつつ、としてはじめて身につくところです。

このプロセスを経て、「そういう順序で書いていく」ことがなぜベストなのかということが、思考レベルでというより、身体レベルでしっくり納得できる領域に到達します。

遠回りなようでも、復習をくり返すことが、上達の近道です。

サラサラ解けた問題でも、2周目になると、また違って感じられるものです。
この感覚は、個々のキーワードや、文、操作のそれぞれについて、「しみじみと深く納得する」とでも言うか、そんな感じのものです。解説についても、聞き落としていたもの、読み飛ばしていたものに気づきます。

騙されたと思って、基礎編ベーシックについても、ひととおり終わったタイミングで、もう一度トライしてみてください。

ひきつづき、よい学びを☆
コメント日時: 2021年04月17日 01時53分26秒
投稿ID: 5094 受講生さんの投稿
動画名の内容に合ってない質問で申し訳ありません。
今まではrange("a1").va と書けばvalue がヒントで出ていたんですけど
worksheets("元データ").range(”a1").va と書いてもvalue がヒントが出てきません。

それからこれは元からそうでしたが
マクロを1行書いて上の行にカーソルを移動させたときRange("a1").Valueとなり、小文字から大文字に変わるべきところのうち""で挟まれた部分だけ小文字のままです。どうしてなのでしょうか?
投稿日時: 2021年03月11日 08時17分20秒
コメントID: 7213 小川慶一さんからのお返事
受講生 さん:

こんにちは。

Worksheets("文字列"). では、ヒントがでません。
唯一の例外と考えておいてください。
(発展編1で解決策...というか、別案を提示します)

"" で挟まれた部分は文字列です。(講座第2章参照してください)
以下のコードで右辺に書いた「"こんにちは"」と同じです。

Range("A1").Value = "こんにちは"

文字列は、こびとちゃんは勝手に変更しません。
一方、プログラムは、セル番地の指定を "A1" のようにアルファベット部分を大文字で書いても "a1" のようにアルファベット部分を小文字で書いても同じように動作します。

...というのが過不足ない説明なのですが、これで十分でしょうか。
コメント日時: 2021年03月12日 02時17分33秒
投稿ID: 4270 受講生さんの投稿
Worksheets(“元データ”)やWorksheet(“要注意リスト”)の元データや要注意リストの部分も変数にして当てはめることは可能ですか?シート名が変わったりしても書き変えなくてすむように、motosheet=range(“A1”).valueみたいにできますか?
投稿日時: 2018年12月26日 08時06分06秒
コメントID: 5855 小川慶一さんからのお返事
受講生 さん:

こんばんは。

> Worksheets(“元データ”)やWorksheet(“要注意リスト”)の元データや要注意リストの部分も変数にして当てはめることは可能ですか?

「オブジェクト型変数」を使ってワークシートを指定することでより可読性高く簡単な記述にできます。
「オブジェクト型変数」については、発展編1で学びまず。

>シート名が変わったりしても書き変えなくてすむように、

というだけでしたら、 [Ctrl] + [H] で置換ダイアログを呼び出し、旧シート名から新シート名に一括変換することで当面はしのげるかと。

とりいそぎ、よろしくお願いします。
コメント日時: 2018年12月27日 06時53分45秒
投稿ID: 4190 シドニーさんの投稿
自分でマクロが書けるようになり成長を実感しています!
前回の問題で勉強したので、今回の問題は何とか解けました!
ただ、小川先生が言っていた、やってはいけない書き方(worksheetsの記述を片方省く)を見事にやってしまい、マクロが思うように実行されず、修正に時間がかかりました(笑)
マクロを書くときにやってしまいがちなミスも学べるので、非常に勉強になります。
投稿日時: 2018年10月02日 06時04分01秒
コメントID: 5748 小川慶一さんからのお返事
シドニーさん:

> ただ、小川先生が言っていた、やってはいけない書き方(worksheetsの記述を片方省く)を見事にやってしまい、マクロが思うように実行されず、修正に時間がかかりました(笑)
> マクロを書くときにやってしまいがちなミスも学べるので、非常に勉強になります。

最初はみんなやります。
正直僕もいまだにといどきやってしまいますが、すぐに気づいて修正できるところが違います。

上達すると、ミスを恐れなくなります。
ミスに気づくのが早くなり、ミスからのリカバリーも早くなるからです。

ひきつづきお楽しみください☆


> 自分でマクロが書けるようになり成長を実感しています!
> 前回の問題で勉強したので、今回の問題は何とか解けました!
> ただ、小川先生が言っていた、やってはいけない書き方(worksheetsの記述を片方省く)を見事にやってしまい、マクロが思うように実行されず、修正に時間がかかりました(笑)
> マクロを書くときにやってしまいがちなミスも学べるので、非常に勉強になります。
コメント日時: 2018年10月02日 14時29分05秒
投稿ID: 4160 Matsumotoさんの投稿
問題5を何度か練習してからヒントを見てチャレンジしたところ、
動画を見る前に回答できました!!
うれしいです!

ただ、タイプが遅い&ミスが多いため時間がかかります。
小川先生のお話にある「体が動かせる」はとても重要ですね。
投稿日時: 2018年09月07日 08時36分34秒
コメントID: 5720 小川慶一さんからのお返事
Matsumotoさん:

着実な進歩、いいですね。

> ただ、タイプが遅い&ミスが多いため時間がかかります。

以下の講座がおすすめです。
○スピード3倍を目指すタイピング講座
https://forum.pc5bai.com/lesson/course/47

○イヤでもWindowsとエクセルの操作が早くなるワークショップ
https://www.exvba.com/winxls.php

コーデングとテストのスピードが5倍以上になれば、マクロ習得のペースは12倍以上になりますよ。

> 小川先生のお話にある「体が動かせる」はとても重要ですね。

それは本当にそうです。
能力があがらない人ほど、身体を動かす・身体の動きを感じる、という、ベタなトレーニングを軽視します。



> 問題5を何度か練習してからヒントを見てチャレンジしたところ、
> 動画を見る前に回答できました!!
> うれしいです!
>
> ただ、タイプが遅い&ミスが多いため時間がかかります。
> 小川先生のお話にある「体が動かせる」はとても重要ですね。
コメント日時: 2018年09月08日 19時21分46秒
投稿ID: 3958 morimotoさんの投稿
疑問が解けました。いろんはVBA本を見てても
worksheets(1)range("a1"),,,,,て書いていたりrange("a1"),,,,,とあったりどうちがうのかわかりませんでした。同じ意味なのか違う意味なのか。当たり前かもしれませんがどのシートを実行させるのか
ってことですね。こんな初歩的なことでもぼくにとっては重要です。ほんといい講座です。

投稿日時: 2018年06月17日 11時08分55秒
コメントID: 5510 小川慶一さんからのお返事
morimotoさん:

> こんな初歩的なことでもぼくにとっては重要です。ほんといい講座です。

ありがとうございます☆
初心者がどこでかかるか?ということについては、対面講座の経験もあるけどつまないと分らないでしょう。

この機会に、以下の動画でもしっかり復習してください。
○基礎講座第1章2 - オブジェクトの指定
https://forum.pc5bai.com/lesson/page/98?t=1529383534


> 疑問が解けました。いろんはVBA本を見てても
> worksheets(1)range("a1"),,,,,て書いていたりrange("a1"),,,,,とあったりどうちがうのかわかりませんでした。
> 同じ意味なのか違う意味なのか。
> 当たり前かもしれませんがどのシートを実行させるのかってことですね。
> こんな初歩的なことでもぼくにとっては重要です。ほんといい講座です。
コメント日時: 2018年06月19日 22時47分15秒
投稿ID: 3912 マメコトさんの投稿
なぜ同じ感想を3通も送信されてしまったのか、わかりません。お手数ですが、削除してください。
以前解説があったかも知れませんが、ピリオドを打った後(Range("A1").⇐これ)の候補リストが、今回のマクロを記述する際に表示されないのは、vbeの仕様なのでしょうか。
投稿日時: 2018年05月21日 11時57分15秒
コメントID: 5467 小川慶一さんからのお返事
マメコトさん:

> 以前解説があったかも知れませんが、ピリオドを打った後(Range("A1").⇐これ)の候補リストが、今回のマクロを記述する際に表示されないのは、vbeの仕様なのでしょうか。

「VBEの仕様でしょうか?」というご質問への答えは、一応「はい」です。

というか、これは僕は一種のバグだと思うのですが、Worksheets() のカッコの中でシートを指定するという方法でマクロを書くと、直後のピリオド以降は自動メンバ表示機能が使えなくなります。

発展編1講座まで学習が進んで「固有オブジェクト型」の変数を扱えるようになるとこの問題は解消できます。

コメント日時: 2018年05月22日 03時33分16秒
投稿ID: 3911 マメコトさんの投稿
全ての問題について、動画解説を見る前に「先ずは自力でやってみよう」と思って取り組んでいます。
今回の問題は、動画5で学んだことが直接活かせる問題でした。
途中で考え込むこともなく、サラサラとコードを書いている自分にびっくりですw
今までのマクロはシートが別だと全く用をなさなかったですが、マクロの中でシートを指定すれば、どのシートからでも動かせるんですね。
面白いなぁ~
投稿日時: 2018年05月21日 11時40分32秒
コメントID: 5465 小川慶一さんからのお返事
マメコトさん:

順調そうで&楽しまれているようで何よりです。

ワークシートの指定の部分は、発展編1まで行くとよりシンプルに勝つパワフルに勝つよりメンテナンスへ高く書くことができるようになります。

基礎編の段階ではちょっとベタですね。
とはいえ、そういうベタな書き方をすることも良い経験になります。

ひきつづきお楽しみください☆

> 全ての問題について、動画解説を見る前に「先ずは自力でやってみよう」と思って取り組んでいます。
> 今回の問題は、動画5で学んだことが直接活かせる問題でした。
> 途中で考え込むこともなく、サラサラとコードを書いている自分にびっくりですw
> 今までのマクロはシートが別だと全く用をなさなかったですが、マクロの中でシートを指定すれば、どのシートからでも動かせるんですね。
> 面白いなぁ~
コメント日時: 2018年05月22日 03時23分44秒
コメントID: 5466 小川慶一さんからのお返事
マメコトさん:

順調そうで&楽しまれているようで何よりです。

ワークシートの指定の部分は、発展編1まで行くとよりシンプルに勝つパワフルに勝つよりメンテナンスへ高く書くことができるようになります。

基礎編の段階ではちょっとベタですね。
とはいえ、そういうベタな書き方をすることも良い経験になります。

ひきつづきお楽しみください☆

> 全ての問題について、動画解説を見る前に「先ずは自力でやってみよう」と思って取り組んでいます。
> 今回の問題は、動画5で学んだことが直接活かせる問題でした。
> 途中で考え込むこともなく、サラサラとコードを書いている自分にびっくりですw
> 今までのマクロはシートが別だと全く用をなさなかったですが、マクロの中でシートを指定すれば、どのシートからでも動かせるんですね。
> 面白いなぁ~
コメント日時: 2018年05月22日 03時26分44秒
投稿ID: 3577 ガラパゴスタディー吉川さんの投稿
worksheets自体を変数に格納するという方法はこの先にでて来ると思いますが、実はオブジェクトの型の宣言が複雑なマクロになってくるとややこしくて苦手だったりします。
この先の講義が楽しみです。
投稿日時: 2017年12月13日 00時18分53秒
コメントID: 5059 小川慶一さんからのお返事
吉川 裕子さん:

「オブジェクト型」の理解は、独学での壁のひとつですね。。
オブジェクト型については、基礎編では扱いません。発展編1で扱います。

> worksheets自体を変数に格納するという方法は

より正しくは、「worksheetへの参照設定を変数に格納するという方法は」です。
「どう違うのか?」ということについてはここでは触れませんが、「worksheets自体を変数に格納する」わけではない、とだけ理解しておいてください。あとは、発展編1にて。

オブジェクト型変数、概念が分かって使いこなせるようになると、とても便利ですよ☆


基礎編は、手を動かすことに慣れてもらうこと、アルゴリズムにひととおり触れることを重視していまして、「抽象概念の理解」、「使い分けられると便利な多様な道具を持つ」といったことは発展編1以降に譲っています。
コメント日時: 2017年12月13日 01時21分46秒
投稿ID: 3410 受講生さんの投稿
シート間をまたぐマクロを作る際は、
・めんどくさくても
・かったるくても
・なにがんでも
"シート名"を書くこと!
投稿日時: 2017年09月09日 16時58分27秒
コメントID: 4873 小川慶一さんからのお返事
受講生 さん:

発展編1まで学ぶともっとシンプルな書き方をできるようになります。

とはいえ、今は、ベタなやり方ですが、面倒でも worksheets("hoge") の記載をする習慣を見につけてください。
あとでもっとシンプルな書き方を学ぶにしても、ここでのそういう努力はムダにはなりません☆

> シート間をまたぐマクロを作る際は、
> ・めんどくさくても
> ・かったるくても
> ・なにがんでも
> "シート名"を書くこと!
コメント日時: 2017年09月10日 21時06分53秒
投稿ID: 2135 受講生さんの投稿
前回の問題で、反復練習を重ねてからこちらに来たおかげで、
ワークシートの指定部分だけを教わったら、あとは自力で解けました(*´▽`*)
教わったそばからIF文の条件式にワークシート指定を忘れて、最初動きませんでしたが(笑)
あるあるなので、シートの特定があるマクロは、気をつけたいと思います。
反復効果がすばらしいです。
gooska
投稿日時: 2016年03月24日 07時45分08秒
コメントID: 3518 ゲストさんからのお返事
受講生 さん:

>反復効果がすばらしいです。

でしょうw
順を追って学べば、エクセルマクロなんて簡単です。

コメント日時: 2016年03月24日 22時08分36秒
投稿ID: 808 野村昭雄さんの投稿
別のシートから情報を取ってくるのは、良く仕事でもあるので、今回の問題も良かったです。
投稿日時: 2014年10月14日 05時09分19秒
コメントID: 1709 ゲストさんからのお返事
野村昭雄 さん:

> 今回の問題も良かったです。

そりゃ、僕が作ってますからw
この問題を自力で解けるようになれば、発展編1の受講OKです。

ひきつづき、お楽しみください☆

>別のシートから情報を取ってくるのは、良く仕事でもあるので、今回の問題も良かったです。
コメント日時: 2014年10月14日 05時52分58秒
投稿ID: 765 浜口 智之さんの投稿
今回はテストをこまめにして、上手くいかなかったら、原因を考えてって感じで
自力で考えながら書き上げることができました。
前回つまずいて変数の考え方を理解できたので、今回はそんなには苦労しなかったです。
引き続き楽しんで進めていきたいと思います。
投稿日時: 2014年10月02日 07時33分51秒
コメントID: 1653 ゲストさんからのお返事
浜口 智之 さん:

>今回はテストをこまめにして、上手くいかなかったら、原因を考えてって感じで
>自力で考えながら書き上げることができました。

適切なプロセスを理解し、実践されているようでなによりです (^^*
前にもお伝えしたとおり、この問題自力で解けたら、発展編1は安心して受講できます。お申込み、もういつでもどうぞ☆
コメント日時: 2014年10月02日 17時31分55秒
投稿ID: 725 受講生さんの投稿
小川先生
フォローアップ動画が閲覧できるようになりましたので、再開しました(それまではEnshuフォルダを先にやっていました)。
コメント欄で時折マインドマップの説明が記載されていますが、ダウンロードした資料とページ数が違います(ページが
少なくなったような感じです)。ただ、該当するページは見つけられました。
当時のコメント投稿時とは、マインドマップも修正されているということでしょうか?
投稿日時: 2014年09月21日 20時11分03秒
コメントID: 1601 水谷久子さんからのお返事
匿名 さん:
コメントありがとうございます。
達人養成塾事務局水谷です。
リリースから何度かマイナーチェンジを行っておりますので、資料のページ数が少なくなっているものもあります。
今後、見つけられない資料等がありましたら、またご連絡いただければと思います。
>小川先生
>フォローアップ動画が閲覧できるようになりましたので、再開しました(それまではEnshuフォルダを先にやっていました)。
>コメント欄で時折マインドマップの説明が記載されていますが、ダウンロードした資料とページ数が違います(ページが
>少なくなったような感じです)。ただ、該当するページは見つけられました。
>当時のコメント投稿時とは、マインドマップも修正されているということでしょうか?
コメント日時: 2014年09月24日 01時05分34秒
コメントID: 1605 受講生さんからのお返事
水谷久子 さん:

では、早速質問させていただいても、よろしいでしょうか?
小川先生のコメントで
>>マインドマップ13枚目を再度見てみてください。
>>どういうときに変数を使うべき、書いていますので。
とありますが、これは現在ではどのページのことでしょうか?
「VisualBasicの文法」(06)または「講義概要」(10)のことでしょうか?
お手数をおかけしますが、ご回答をお願いいたします。

>匿名 さん:
>コメントありがとうございます。
>達人養成塾事務局水谷です。
>リリースから何度かマイナーチェンジを行っておりますので、資料のページ数が少なくなっているものもあります。
>今後、見つけられない資料等がありましたら、またご連絡いただければと思います。
>>小川先生
>>フォローアップ動画が閲覧できるようになりましたので、再開しました(それまではEnshuフォルダを先にやっていました)。
>>コメント欄で時折マインドマップの説明が記載されていますが、ダウンロードした資料とページ数が違います(ページが
>>少なくなったような感じです)。ただ、該当するページは見つけられました。
>>当時のコメント投稿時とは、マインドマップも修正されているということでしょうか?
>
コメント日時: 2014年09月24日 02時32分14秒
コメントID: 1608 小川慶一さんからのお返事
匿名 さん:

達人養成塾 小川です。

すいません。ご説明がちょっとわかりにくかったですね。

実は、オンライン講座と公開講座では、使っているレジュメが違うのです。
僕の以前の投稿指しているページ数は、公開講座用のレジュメでのものでした。

>>>マインドマップ13枚目を再度見てみてください。
>>>どういうときに変数を使うべき、書いていますので。

基礎編第1章の、変数について触れている部分です。
10枚目ですね。



>水谷久子 さん:
>
>では、早速質問させていただいても、よろしいでしょうか?
>小川先生のコメントで
>>>マインドマップ13枚目を再度見てみてください。
>>>どういうときに変数を使うべき、書いていますので。
>とありますが、これは現在ではどのページのことでしょうか?
>「VisualBasicの文法」(06)または「講義概要」(10)のことでしょうか?
>お手数をおかけしますが、ご回答をお願いいたします。
>
>>匿名 さん:
>>コメントありがとうございます。
>>達人養成塾事務局水谷です。
>>リリースから何度かマイナーチェンジを行っておりますので、資料のページ数が少なくなっているものもあります。
>>今後、見つけられない資料等がありましたら、またご連絡いただければと思います。
>>>小川先生
>>>フォローアップ動画が閲覧できるようになりましたので、再開しました(それまではEnshuフォルダを先にやっていました)。
>>>コメント欄で時折マインドマップの説明が記載されていますが、ダウンロードした資料とページ数が違います(ページが
>>>少なくなったような感じです)。ただ、該当するページは見つけられました。
>>>当時のコメント投稿時とは、マインドマップも修正されているということでしょうか?
>>
>
コメント日時: 2014年09月24日 16時32分25秒
コメントID: 1609 小川慶一さんからのお返事
匿名 さん:

達人養成塾 小川です。

追記です。
すいません。ご説明がちょっとわかりにくかったですね。

実は、オンライン講座と公開講座では、使っているレジュメが違うのです。
僕の以前の投稿指しているページ数は、公開講座用のレジュメでのものでした。

>>>マインドマップ13枚目を再度見てみてください。
>>>どういうときに変数を使うべき、書いていますので。

基礎編第1章の、変数について触れている部分です。
10枚目ですね。

よろしく、お願いいたします。



>水谷久子 さん:
>
>では、早速質問させていただいても、よろしいでしょうか?
>小川先生のコメントで
>>>マインドマップ13枚目を再度見てみてください。
>>>どういうときに変数を使うべき、書いていますので。
>とありますが、これは現在ではどのページのことでしょうか?
>「VisualBasicの文法」(06)または「講義概要」(10)のことでしょうか?
>お手数をおかけしますが、ご回答をお願いいたします。
>
>>匿名 さん:
>>コメントありがとうございます。
>>達人養成塾事務局水谷です。
>>リリースから何度かマイナーチェンジを行っておりますので、資料のページ数が少なくなっているものもあります。
>>今後、見つけられない資料等がありましたら、またご連絡いただければと思います。
>>>小川先生
>>>フォローアップ動画が閲覧できるようになりましたので、再開しました(それまではEnshuフォルダを先にやっていました)。
>>>コメント欄で時折マインドマップの説明が記載されていますが、ダウンロードした資料とページ数が違います(ページが
>>>少なくなったような感じです)。ただ、該当するページは見つけられました。
>>>当時のコメント投稿時とは、マインドマップも修正されているということでしょうか?
>>
>
コメント日時: 2014年09月24日 16時33分19秒