発展編1 フォローメールセミナー 第2回

この講座は有料講座です。
講座の購入後ご覧になれます。

ログインアカウントの新規作成

解説

発展編1のフォローメールセミナー第2回のフィードバック記入ページです。 【動画はありません】個別ページにて重要事項満載のフォローメールをお読みいただけます。

この教材についての過去の質問・感想

11195 : 小川慶一の回答 (2019-02-22 21:32:17)

受講生 さん:

以下の動画から学ばれたほうが早いかな?と思います。
https://online.pc5bai.com/Package/index/26

お題は同じで、解説は動画です。


> こんにちは今回メールセミナーでハマってしまいました。
> メールとエクセルデータのみでマクロを作りましたが、shFmのところ無意識に読み飛ばしていました。
> InFmMax = Range("b65536").End(xlUp).Row
>
> lnFmMx = shFm.Range("B65536").End(xlUp).Row
>
>
> st = Range("B" & Infm).Value
>
> st = shFm.Range("B" & lnFm).Value
> オンライン講座にアクセスしていれば読み飛ばさなかったと思います。
>
> 予習ですが
> Sub deletsSheets()
> Dim ws As Worksheet
> For Each ws In Worksheets
> Debug.Print ws.Name
>
> If Left(ws.Name, 4) <> "main" Then
> ws.Delete
> End If
> Next
> End Sub
> ワークシート削除プログラム少しやってみました。動画が沢山ありどの動画か思い出せない事が有ります50代男性です。
> 分かり易い解説ありがとうございます。


11181 : 受講生さんのコメント (2019-02-18 09:37:22)

こんにちは今回メールセミナーでハマってしまいました。
メールとエクセルデータのみでマクロを作りましたが、shFmのところ無意識に読み飛ばしていました。
InFmMax = Range("b65536").End(xlUp).Row

lnFmMx = shFm.Range("B65536").End(xlUp).Row


st = Range("B" & Infm).Value

st = shFm.Range("B" & lnFm).Value
オンライン講座にアクセスしていれば読み飛ばさなかったと思います。

予習ですが
Sub deletsSheets()
Dim ws As Worksheet
For Each ws In Worksheets
Debug.Print ws.Name

If Left(ws.Name, 4) <> "main" Then
ws.Delete
End If
Next
End Sub
ワークシート削除プログラム少しやってみました。動画が沢山ありどの動画か思い出せない事が有ります50代男性です。
分かり易い解説ありがとうございます。


3632 : 小川慶一の回答 (2015-01-17 09:14:51)

ゲスト さん:

そうでしたか。それは、失礼しました。
お書きいただいた情報からしか判断できないので、ご理解いただければと思います。
「初心者だ」と書かれていると、初心者だと解釈してしまいます。
こびとちゃんじゃないですが。

基礎編のフォロー動画は、全部自力で解けますでしょうか?
基礎編だけでもかなりのことができますし、基本のアルゴリズム、書き方のパターンは、基礎編のフォローでしっかりマスターできます。

実務でいまどのような課題と向き合われているのか分かりませんが。
得てして、むやみに知識を増やすよりも、基礎をしっかりさせることのほうが解決の近道だったりしますので。

出先につき、とりいそですが。


>コメントありがとうございます。
>
>基礎編は全てやり、発展編も全て動画を見ました。
>仕事の関係で一刻も早く習得したかったために一気にやったのですが、演習が足りなかったのかもしれません。その場所まで戻りもう一度やります。初心者と言ったのは、初心者から基礎編をやりここまできたところ、という意味でした。
>
>どうもありがとうございます。


3631 : ゲストさんのコメント (2015-01-17 08:55:41)

コメントありがとうございます。

基礎編は全てやり、発展編も全て動画を見ました。
仕事の関係で一刻も早く習得したかったために一気にやったのですが、演習が足りなかったのかもしれません。その場所まで戻りもう一度やります。初心者と言ったのは、初心者から基礎編をやりここまできたところ、という意味でした。

どうもありがとうございます。


3629 : 小川慶一の回答 (2015-01-17 05:07:20)

ゲスト さん:

>初めてなのでわからないことだらけなのですが、、
>少しずつできるようになれるように楽しみながらやっていきたいです。よろしくお願いします。
>シートをコピーして、名前をつける、マクロがまだ一人でできない状況です。

>①active sheetsのままがいけませんか。
>②まだ、はなこのステップのはこのどこに、どこまでのお団子をいれたらいいか、よくわかっていません。また、変数を定義する場所もよくわかっていません。

→先に基礎編やってください。順番が逆です。発展編1は、基礎編終了した方が学ぶ講座です。
基礎編やっていない人が発展編1をやるのは、小学校の算数終ってない人が高校で虚数とか微分方程式学ぶようなものです。

> エラーメッセージが、「この名前は既に使用されています。別の名前を使用してください。」となってしまう。。

すでに、同名のシートがエクセルファイル上にあったのでしょう。
(..と、僕が思ったのは、エラーメッセージにまさにそう書いてあるからです)
エラーメッセージに書かれている言葉は、意味が理解できないときは、大きな声で読み上げるのが原則です。

よろしくお願いします。




>初心者です。
>
>初めてなのでわからないことだらけなのですが、、
>少しずつできるようになれるように楽しみながらやっていきたいです。よろしくお願いします。
>シートをコピーして、名前をつける、マクロがまだ一人でできない状況です。
>
>
>以下だと、何が問題なのか自分では解明できなくて、教えていただきたいのですが。
>
>①active sheetsのままがいけませんか。
>②まだ、はなこのステップのはこのどこに、どこまでのお団子をいれたらいいか、よくわかっていません。また、変数を定義する場所もよくわかっていません。
>
>アドバイスをいただけると幸いです。よろしくお願いします。  (渡辺早紀)
>
>
>
>'シート「main」にある各取引先の名称のシートを作れ
>'(シートには何も記載されていなくてよい)
>'ヒント: [1] シートを追加するマクロを作ってみる
>' [2] [1]で作ったマクロで、さらに、その直後に、作ったシートの名前を変更するようにする
>' [3] [2]で作ったマクロで、作ったシートの名前を、シート「main」のセルB2の値になるようにする
>' [4] [3]で作ったマクロで、シート「main」の2行目から21行目までで連続作業をするよう改変する
>
>------------------------------------
>
>Sub shadd()
>
>Dim gyo 'エラーメッセージが、「この名前は既に使用されています。別の名前を使用してください。」となってしまう。。
>
>For gyo = 2 To 21
>
> Worksheets.Add
>
>
> ActiveSheet.Select
> ActiveSheet.Name = Worksheets("main").Range("B" & gyo).Value
>
>
>Next
>
>
>End Sub
>
>
>
>
>
>


3627 : ゲストさんのコメント (2015-01-16 23:58:24)

初心者です。

初めてなのでわからないことだらけなのですが、、
少しずつできるようになれるように楽しみながらやっていきたいです。よろしくお願いします。
シートをコピーして、名前をつける、マクロがまだ一人でできない状況です。


以下だと、何が問題なのか自分では解明できなくて、教えていただきたいのですが。

①active sheetsのままがいけませんか。
②まだ、はなこのステップのはこのどこに、どこまでのお団子をいれたらいいか、よくわかっていません。また、変数を定義する場所もよくわかっていません。

アドバイスをいただけると幸いです。よろしくお願いします。  (渡辺早紀)



'シート「main」にある各取引先の名称のシートを作れ
'(シートには何も記載されていなくてよい)
'ヒント: [1] シートを追加するマクロを作ってみる
' [2] [1]で作ったマクロで、さらに、その直後に、作ったシートの名前を変更するようにする
' [3] [2]で作ったマクロで、作ったシートの名前を、シート「main」のセルB2の値になるようにする
' [4] [3]で作ったマクロで、シート「main」の2行目から21行目までで連続作業をするよう改変する

------------------------------------

Sub shadd()

Dim gyo 'エラーメッセージが、「この名前は既に使用されています。別の名前を使用してください。」となってしまう。。

For gyo = 2 To 21

Worksheets.Add


ActiveSheet.Select
ActiveSheet.Name = Worksheets("main").Range("B" & gyo).Value


Next


End Sub






2733 : 小川慶一の回答 (2014-10-15 05:24:01)

匿名 さん:

このシリーズは、動画講座がなかったころに作ったものなので、テキストベースです。
予習問題があるのも、その延長ででした。

>複数シートを扱う場合は、オブジェクト型変数は便利ですね。今後バリバリと使っていきたいと思います。
>次回の予習問題があるのもいいですね。


2728 : 受講生さんのコメント (2014-10-14 23:35:11)

複数シートを扱う場合は、オブジェクト型変数は便利ですね。今後バリバリと使っていきたいと思います。
次回の予習問題があるのもいいですね。


3274 : ガラパゴスタディー事務局の回答 (2013-10-31 09:36:00)

小俣さん:

> いよいよこれまで覚えてきたそれらの部品を
> 一つ一つ有機的に結合させて目的を達成するひとつの
> アプリにしていく過程に入ってきたぞーっていう感じがして
> とてもわくわくしています(^o^)

うん。それが発展編の醍醐味♪

If Left(ws.Name, 1) <> "m" Then '[1]    Application.DisplayAlerts = False '[2-1]        ws.Delete    Application.DisplayAlerts = True  '[2-2]End If


[1] について、条件設定をどうすべきかはケースバイケースです。
余裕があったら、テキストから select case 構文の説明見つけて読んでみて。

[2-1] と [2-2] の間をインデントするかどうかはいろいろ。(構造じゃないからインデントはしない、という考え方もあり)
ファイル全体の中でルール統一していればOK。

以下のように with 句を使って構造として表現するとインデントする理由になります(w

If Left(ws.Name, 1) <> "m" Then '[1]    With Application        .DisplayAlerts = False        '[2-1]        ws.Delete        .DisplayAlerts = True         '[2-2]    End WithEnd If


あと、 [2-1], [2-2] は、If 文の外に置いてもいいかな。
シート削除のたびに .displayalerts の設定をいじることをコストと見るか、エクセルの設定を変えてしまうようなコードだけに、極力 [2-1] のあと [2-2] までの間にエラーが発生して異常終了するリスクを避けることのメリットが大きいと見るか。このあたりはケースバイケースです。


3272 : 小俣卓生さんのコメント (2013-10-30 23:54:00)

今まで部品をひとつひとつ覚えていく感じで
それ単体では特に目的を達成することはできませんでした。

ところが、いよいよこれまで覚えてきたそれらの部品を
一つ一つ有機的に結合させて目的を達成するひとつの
アプリにしていく過程に入ってきたぞーっていう感じがして
とてもわくわくしています(^o^)

既存のシートを初期化するコードはセミナー当日に解説が少し
あったのですんなりと書くことができました。

Sub GetNames1()    Dim shFm As Worksheet    Dim InFm As Long    Dim InFmMx As Long        Dim st As String        Set shFm = Worksheets("main")    InFmMx = shFm.Range("B" & Rows.Count).End(xlUp).Row        wkDel '既存シートの初期化    For InFm = 2 To InFmMx        st = shFm.Range("B" & InFm).Value        Sheets("main1").Copy after:=Sheets(2)        Sheets("main1 (2)").Name = st    NextEnd SubSub wkDel()    Dim ws As Worksheet    For Each ws In Worksheets        If Left(ws.Name, 1) <> "m" Then            Application.DisplayAlerts = False                ws.Delete            Application.DisplayAlerts = True        End If    NextEnd Sub


3262 : ガラパゴスタディー事務局の回答 (2013-09-17 00:38:00)

やまださん:

> 「こうしないと」とか「このほうがいい」とコメントされるかもと思っていたので。

前にも書いたとおり、途中経過なので。
よほど基本的な方針間違いとかがなければ、何でもよいです。

完成形のマクロについても、正解はひとつではありません。
可読性、メンテナンス性、高速性のどれを意識するかによって仕上がりも変わってきます。
このメールセミナーで紹介しているのは、あくまで一形態です。



3261 : やまださんのコメント (2013-09-16 14:08:00)

予想していたよりはるかにいいご回答をありがとうございます。「こうしないと」とか「このほうがいい」とコメントされるかもと思っていたので。。。「変数を出来るだけ減らす」「変数を多めに使う」「可能な限り変数を使う」などのパターンを意識しながらいろいろ試してみようと思います。


3260 : ガラパゴスタディー事務局の回答 (2013-09-15 21:21:00)

やまださん:

途中経過なので、評価は特にないです。

変数を徹底して減らしたいということなら、 kazumax もここでは宣言不要かな。一回しか使っていないので。
以下の要領。

Sub sirtowohuyasu()    Dim kazu As Long    For kazu = 2 To Sheets("main").Range("B65536").End(xlUp).Row        Sheets("main1").Copy After:=Sheets(2)        ActiveSheet.Name = Sheets("main").Range("B" & kazu).Value    NextEnd Sub



3259 : やまださんのコメント (2013-09-15 17:55:00)

先生。お疲れさまです。

下記のようなプログラムにしてみました。変数が少ない方が書きやすくて。。。駄目でしょうか?

Sub sirtowohuyasu()

Dim kazu as long
Dim kazumax as long
 kazumax =Sheets("main").range("B65536").end(xlup).row

  For kazu = 2 to kazumax

  sheets("main1").Copy after:=sheets(2)
  Activesheet.Name=Sheets("main").range("B"&kazu).value

   next

End sub


3110 : ガラパゴスタディー事務局の回答 (2013-01-24 02:40:00)

山根さん:

> やはり動くのですが、後々問題があるのだろうと思います。

それでは、しばらく放置しておきます(w


> 取引先名称を変数に格納してシート名に割り当てるのは思いつきませんでした。
> 解説を繰り返し真似してみます。

基本は、「複数回調べる手間を省くべく、変数に格納して使い回し」です。

それと、あとからでは取得できない値を、取得できるタイミングで取得しておきたいとき。


3109 : 山根信行さんのコメント (2013-01-24 01:51:00)

私も同様にAfter:=sheets(2)ではなくFor Nextのカウンタ変数を入れていました。
先生の解説を読む前に書いてみたのが以下です。
やはり動くのですが、後々問題があるのだろうと思います。

            wsformat.Copy After:=Worksheets(cnt)            ActiveSheet.Name = wsdata.Range("b" & cnt).Value


取引先名称を変数に格納してシート名に割り当てるのは思いつきませんでした。
解説を繰り返し真似してみます。


3108 : ガラパゴスタディー事務局の回答 (2013-01-24 00:44:00)

大椛さん:

あとで出てきますが、

    Sheets("main1").Copy After:=Sheets(Sheets.Count)


とすると、新規シートの追加先は、一番最後のシートの後ろになります。

「Sheets」はすべてのシートのコレクション。

ここで、Sheets("文字列") でも Sheets(数値) でもコレクションから単一のオブジェクトを指定することが可能です。

Sheets.Count は、Sheetsコレクションの要素数を返してくれます。


3107 : 大椛輝志さんのコメント (2013-01-23 15:02:00)

ForNextのカウンター終了条件や、シートコピーなど、自動マクロを使って無事にマクロを書けました。少し感動です。

最後、得意先のシートをバババっと作成するマクロの組み込みのところですが、

Sheets("main1").Copy After:=Sheets(2)Sheets("main1 (2)").Name = st


Copy After:=Sheets(2)
「Sheets(2)」のままだとうまくいかないんじゃないかと思い、
変数lnFmを使って
「Sheets(lnFm)」と書いてしまいました。

これでも無事に動いたのですが、コピーされたシートの順番が変わってくるんですね。新しく作成された順、作成された順の違いです。

まだまだ勉強が必要ですね。。。


3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 発展編1 フォローメールセミナー 第1回
    【動画1】 発展編1 フォローメールセミナー 第1回 未習得
  2. 【動画2】 発展編1 フォローメールセミナー 第2回
    【動画2】 発展編1 フォローメールセミナー 第2回 未習得
  3. 【動画3】 発展編1 フォローメールセミナー 第3回
    【動画3】 発展編1 フォローメールセミナー 第3回 未習得
  4. 【動画4】 発展編1 フォローメールセミナー 第4回
    【動画4】 発展編1 フォローメールセミナー 第4回 未習得
  5. 【動画5】 発展編1 フォローメールセミナー 第5回
    【動画5】 発展編1 フォローメールセミナー 第5回 未習得
  6. 【動画6】 発展編1 フォローメールセミナー 第6回
    【動画6】 発展編1 フォローメールセミナー 第6回 未習得
  7. 【動画7】 発展編1 フォローメールセミナー 第7回
    【動画7】 発展編1 フォローメールセミナー 第7回 未習得
  8. 【動画8】 発展編1 フォローメールセミナー 第8回
    【動画8】 発展編1 フォローメールセミナー 第8回 未習得
  9. 【動画9】 発展編1 フォローメールセミナー 第9回
    【動画9】 発展編1 フォローメールセミナー 第9回 未習得
  10. 【動画10】 発展編1 フォローメールセミナー 第10回
    【動画10】 発展編1 フォローメールセミナー 第10回 未習得
  11. 【動画11】 午後のフォローアップ No.1
    【動画11】 午後のフォローアップ No.1 未習得
  12. 【動画12】 発展編1 フォローメールセミナー 第11回
    【動画12】 発展編1 フォローメールセミナー 第11回 未習得
  13. 【動画13】 午後のフォローアップ No.2
    【動画13】 午後のフォローアップ No.2 未習得
  14. 【動画14】 発展編1 フォローメールセミナー 第12回
    【動画14】 発展編1 フォローメールセミナー 第12回 未習得
  15. 【動画15】 午後のフォローアップ No.3
    【動画15】 午後のフォローアップ No.3 未習得
  16. 【動画16】 発展編1 フォローメールセミナー 第13回
    【動画16】 発展編1 フォローメールセミナー 第13回 未習得
  17. 【動画17】 午後のフォローアップ No.4
    【動画17】 午後のフォローアップ No.4 未習得
  18. 【動画18】 発展編1 フォローメールセミナー 第14回
    【動画18】 発展編1 フォローメールセミナー 第14回 未習得
  19. 【動画19】 午後のフォローアップ No.5
    【動画19】 午後のフォローアップ No.5 未習得
  20. 【動画20】 発展編1 フォローメールセミナー 第15回
    【動画20】 発展編1 フォローメールセミナー 第15回 未習得
  21. 【動画21】 午後のフォローアップ No.6
    【動画21】 午後のフォローアップ No.6 未習得
  22. 【動画22】 発展編1 フォローメールセミナー 第16回
    【動画22】 発展編1 フォローメールセミナー 第16回 未習得
  23. 【動画23】 午後のフォローアップ No.7
    【動画23】 午後のフォローアップ No.7 未習得
  24. 【動画24】 発展編1 フォローメールセミナー 第17回
    【動画24】 発展編1 フォローメールセミナー 第17回 未習得
  25. 【動画25】 午後のフォローアップ No.8
    【動画25】 午後のフォローアップ No.8 未習得
  26. 【動画26】 発展編1 フォローメールセミナー 第18回
    【動画26】 発展編1 フォローメールセミナー 第18回 未習得
  27. 【動画27】 午後のフォローアップ No.9
    【動画27】 午後のフォローアップ No.9 未習得
  28. 【動画28】 発展編1 フォローメールセミナー 第19回
    【動画28】 発展編1 フォローメールセミナー 第19回 未習得
  29. 【動画29】 午後のフォローアップ No.10
    【動画29】 午後のフォローアップ No.10 未習得
  30. 【動画30】 発展編1 フォローメールセミナー 第20回
    【動画30】 発展編1 フォローメールセミナー 第20回 未習得
  31. 【動画31】 午後のフォローアップ No.11
    【動画31】 午後のフォローアップ No.11 未習得
  32. 【動画32】 発展編1 フォローメールセミナー 第21回
    【動画32】 発展編1 フォローメールセミナー 第21回 未習得
  33. 【動画33】 午後のフォローアップ No.12
    【動画33】 午後のフォローアップ No.12 未習得
  34. 【動画34】 発展編1 フォローメールセミナー 第22回
    【動画34】 発展編1 フォローメールセミナー 第22回 未習得
  35. 【動画35】 午後のフォローアップ No.13
    【動画35】 午後のフォローアップ No.13 未習得
  36. 【動画36】 発展編1 フォローメールセミナー 第23回
    【動画36】 発展編1 フォローメールセミナー 第23回 未習得
  37. 【動画37】 午後のフォローアップ No.14
    【動画37】 午後のフォローアップ No.14 未習得
  38. 【動画38】 発展編1 フォローメールセミナー 第24回
    【動画38】 発展編1 フォローメールセミナー 第24回 未習得
  39. 【動画39】 午後のフォローアップ No.15
    【動画39】 午後のフォローアップ No.15 未習得
  40. 【動画40】 発展編1 フォローメールセミナー 第25回
    【動画40】 発展編1 フォローメールセミナー 第25回 未習得
  41. 【動画41】 午後のフォローアップ No.16
    【動画41】 午後のフォローアップ No.16 未習得
  42. 【動画42】 発展編1 フォローメールセミナー 第26回
    【動画42】 発展編1 フォローメールセミナー 第26回 未習得
  43. 【動画43】 午後のフォローアップ No.17
    【動画43】 午後のフォローアップ No.17 未習得
  44. 【動画44】 発展編1 フォローメールセミナー 第27回
    【動画44】 発展編1 フォローメールセミナー 第27回 未習得
  45. 【動画45】 午後のフォローアップ No.18
    【動画45】 午後のフォローアップ No.18 未習得
  46. 【動画46】 発展編1 フォローメールセミナー 第28回
    【動画46】 発展編1 フォローメールセミナー 第28回 未習得
  47. 【動画47】 午後のフォローアップ No.19
    【動画47】 午後のフォローアップ No.19 未習得
  48. 【動画48】 発展編1 フォローメールセミナー 第29回
    【動画48】 発展編1 フォローメールセミナー 第29回 未習得
  49. 【動画49】 午後のフォローアップ No.20
    【動画49】 午後のフォローアップ No.20 未習得
  50. 【動画50】 発展編1 フォローメールセミナー 第30回
    【動画50】 発展編1 フォローメールセミナー 第30回 未習得
  51. 【動画51】 午後のフォローアップ 最終回
    【動画51】 午後のフォローアップ 最終回 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ