{"text_format":"1","workbook":"xlsx","n_sheets":16,"sheets":["※まず初めに※","心構えについて","①マクロ","②変数","③環境","④基礎","⑤注意","⑥重要","⑦便利","⑧体験","⑨例題","例題①","例題②","⑩基礎知識","⑪具体例","⑫AIテスト"],"not_rendered":{"charts":0,"images":116,"macros":1,"external_links":0,"defined_names":6,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"※まず初めに※","index":0,"n_rows":52,"n_cols":9,"rows_kept":52,"cut":false,"hidden":false,"merged":[]}
[null,"ファイルをダウンロードしてくださり、ありがとうございます"]
[]
[null,"以下の順番で内容をお伝えしていきます！"]
[]
[null,"①マクロ学習の心構え"]
[null,"②マクロの基礎"]
[null,"③AIを使ったマクロ作成方法"]
[]
[]
[null,"マクロの基礎"]
["①","マクロとは"]
["②","変数とは"]
["③","開始するための環境"]
["④","基礎知識"]
["⑤","作成時の注意ポイント"]
["⑥","マクロ作成の重要ポイント"]
["⑦","覚えておくと便利なもの"]
["⑧","基礎の体験"]
["⑨","例題"]
[]
[null,"AIを使ったマクロ作成方法"]
["⑩","基礎知識"]
["⑪","具体例"]
["⑫","AIテスト用シート"]
[]
[]
[null,"※もし画面上部に「マクロが無効にされました」と出たら「コンテンツの有効化」を選択してください"]
[]
[]
[]
[null,"※また、このような表示が出るようなら、次の手順を試してみてください"]
[]
[]
[]
[null,"①ファイルを右クリックして以下の画面を出す",null,null,null,null,null,null,"③赤丸の部分にチェックしてOKを押す"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,"②プロパティを選択する"]

{"sheet":"心構えについて","index":1,"n_rows":110,"n_cols":2,"rows_kept":110,"cut":false,"hidden":false,"merged":[]}
[]
[null,"マクロ学習の心構えについて"]
[]
[null,"・挑戦してうまくできたら、とんでもない達成感を味わえる"]
[null,"・面倒な手間を全部省ける"]
[null,"・どんな複雑な処理も機械が全部やってくれるため疲れない"]
[null,"・30分かかる作業が5秒で終わる"]
[null,"・処理を待っている間はボーっとしてるだけ"]
[null,"・手動でやらないため、ミスがなくなる"]
[null,"・速く正確に仕事できるため評価があがる"]
[null,"・スキルが身に着き転職に有利になる"]
[null,"・毎日定時で帰宅できる"]
[]
[null,"・温かくて美味しいごはんを食べられる"]
[null,"・のんびりお風呂に入れる"]
[null,"・家族といっぱい笑いあえる"]
[null,"・趣味に思う存分、時間を使える"]
[null,"・家族との思い出をたくさん作れる"]
[null,"・人生を楽しいと思える"]
[]
[null,"これは、マクロを組めたことによって私が手に入れたものです"]
[]
[null,"VBAを学ぶことでこれだけのメリットを享受できます！"]
[null,"だからこそ、最初にお伝えしたいことがあります"]
[]
[]
[null,"マクロ学習は簡単ではありません"]
[]
[]
[null,"いきなり夢を壊すようなことを言って申し訳ないのですが…"]
[null,"まずは”学習が簡単ではない”ことを理解しておいたほうが気持ちの整理ができるでしょう"]
[]
[null,"それでも叶えたい未来があるから、このファイルを購入してくださったと信じています"]
[]
[null,"そんなあなただからこそ、これからマクロ学習をするにあたって以下のポイントをおさえていただきたく思います"]
[]
[]
[null,"①何よりも楽しむこと"]
[null,"②上達したいなら他人が作ったマクロを見ること"]
[null,"③悩むことと考えることは違う"]
[]
[]
[]
[null,"①何よりも楽しむこと"]
[]
[null,"「夢中は努力に勝てない」これは私が大好きな言葉です"]
[null,"断言しますが、上達したいのであれば”楽しむ”ことが何よりも大事！"]
[]
[null,"先に述べたように学習が簡単ではないからこそ、楽しんでほしい"]
[]
[null,"「え…簡単じゃないんでしょ？どうやって楽しむの？」"]
[null,"これに対する回答はすごくシンプルです"]
[]
[null,"簡単なマクロを作成して達成感を味わうこと"]
[]
[null,"難しいからこそ、自分が望む動きができた時の達成感はハンパないです！"]
[null,"私は思わずガッツポーズしてましたｗ"]
[]
[null,"いきなり難しい処理を実現しようと思うと挫折するでしょう"]
[null,"最初は簡単なマクロを作成し、徐々に難易度を上げてください"]
[]
[null,"あなたが目指すのは”操作をなくして楽をする”ことです"]
[]
[null,"誰かと競争しているわけではないので、自分のペースで楽しみましょう！"]
[]
[]
[null,"②上達したいなら他人が作ったマクロを見ること"]
[]
[null,"知識＝選択肢の数"]
[null,"これは基礎を学ぶだけでは身につきません"]
[]
[null,"組む⇒エラーになる⇒解決する"]
[null,"これを何度も経験しないと上達できません"]
[]
[null,"ですが、初心者にとっては”経験するチャンス”すら得難いでしょう"]
[null,"そもそも何ができるのかを知りませんからね"]
[]
[null,"だからこそ、理想の動きを実現するために必要なのが"]
[null,"他人が作ったマクロを見ることです"]
[]
[null,"しかし、マクロのコードを具体的に見れるチャンスは多くありません"]
[null,"依頼すれば最低5万円以上、高ければ100万円以上かかるものを普通は見せませんからね"]
[]
[null,"そこで、私が作ったコードの一部を参考に提供します"]
[]
[null,"どういう書き方をすれば、どういう動きができるのか"]
[null,"これを見られるだけでも大きな価値があります"]
[]
[null,"自分が知らない知識を得るのは楽しいですよ！"]
[]
[]
[null,"③悩むことと考えることは違う"]
[]
[null,"ハッキリ言いますが、初心者がいくら悩んでも答えは出ません"]
[null,"悩むというのは”自分の知識の中で解決できる策を探している”状態だからです"]
[]
[null,"実際、3日間ずっと悩んだあげく、他人のマクロを見たらすぐに解決できた私が保証します"]
[]
[null,"必要なのは”論理的に考える”ことだけであって、悩むことではないのです"]
[null,"具体的な案が浮かばなくなったら、自分の知識の外に解決策を求めましょう"]
[]
[null,"大事なのでもう一度言います"]
[null,"悩んでも答えが出ないなら、知識の外に解決策を求めてください"]
[]
[null,"具体的には【マクロ作成の裏技】が知識の外に解決策を求める方法になります"]
[]
[null,"悩み続けるとモチベーションが下がります"]
[null,"私がそうだったので、これから学ぼうとするあなたには回避してほしい"]
[]
[null,"悩んでいる状態　と　考えている状態　をしっかり区別してくださいね！"]

{"sheet":"①マクロ","index":2,"n_rows":94,"n_cols":9,"rows_kept":94,"cut":false,"hidden":false,"merged":[]}
[]
[null,"①マクロとは"]
[]
[null,"まず最初に、マクロとは「複数の操作をまとめて呼び出す」機能のことを指します"]
[null,"特にExcelの自動化で使われる例が多く、データ集計や分類、シートの印刷などさまざまな作業を自動で行わせることができます"]
[]
[null,"Officeにおいてマクロの操作内容を記録するためのプログラミング言語をVBA（Visual Basic for Applications）といいます"]
[null,"このVBAを使いこなせるほど、マクロでより幅広い業務を自動化できるようになります"]
[]
[null,"マクロは便利な機能、VBAはそれを実現するための部品と考えればOK"]
[null,"自分で操作して行う作業はマクロでだいたい実現できるため、日々の業務のほぼ全てを全自動化できるという認識で大丈夫です"]
[]
[]
[null,"マクロの作り方には大別して2種類あり、VBAを使って自分でプログラムする方法と、マクロの記録機能を使って記憶させる方法があります"]
[null,"それぞれの特徴が以下"]
[]
[null,null,"VBA"]
[null,null,"メリット→動作範囲や実行回数、実行条件などを細かく制御できる"]
[null,null,"デメリット→プログラミングであるため、習得に時間がかかる"]
[]
[null,null,"マクロの記録機能"]
[null,null,"メリット→動作の記録が簡単にできる"]
[null,null,"デメリット→記録できる内容に制限がある"]
[]
[null,"今回紹介するのはVBAを使ったプログラミングのほうです"]
[]
[]
[]
[null,"①-1　マクロでできること"]
[]
[null,"具体的にどういう内容を実現できるのか、ここで例を挙げていきます"]
[]
[null,"【業務の自動化全般】"]
[null,"★","1000件のブックから必要なデータのみを抽出し、1つのブックにグラフ表示する"]
[null,"★","ワンクリックで領収書やシフト表を発行する"]
[null,"★","複数のファイルを一つにまとめてデータを集計する"]
[null,"★","展示会ごとに名刺情報が別々のファイルに保存されたExcelファイルを、顧客管理用のExcelに一気に転記する"]
[null,"★","請求書などの一括印刷"]
[null,"★","売上管理表をもとに請求書を取引先ごとに印刷する"]
[null,"★","シートに保存された顧客情報（氏名、メールアドレスなど）をもとに一括メールの送信処理を実行する"]
[null,"★","月初になるたびに前月の売上明細データを年ごとの集計データのシートに手動で転記しているといった場合に、転記作業を自動化して年間売上推移レポートを作成する"]
[null,"★","複数のファイルから必要なデータを取得し、望む形で表示する"]
[]
[null,"【ほかのMicrosoft製品との連携】"]
[null,null,"Microsoftアプリケーション内で連携させて用いられるのもマクロの利点です"]
[null,"★","Excelのデータをプレゼンで用いるためPowerPointのスライド内に埋め込む"]
[null,"★","Accessに蓄積したデータを必要な分だけExcelに取り出す"]
[null,null,"など便利な活用法は枚挙にいとまがありません"]
[]
[null,"【Webからのデータの取得】"]
[null,null,"いわゆるWebスクレイピング（Webからのデータの取得）もVBAを理解すれば、開発環境を構築する手間なく行うことができます"]
[null,null,"サイトから抽出したデータを直接セルに設定できるため、スムーズにデータ分析に移行できる点も魅力的です"]
[]
[null,"【メールの作成・送信】"]
[null,null,"ExcelとMicrosoft Outlookなどのメールソフトを連携させることで、メールの作成・送信を自動で行えます"]
[null,null,"日報やメルマガなど定期的かつ大体同じフォーマットで作成することになるメールは、自動作成・自動送信することで手間を大きく削減できます"]
[]
[]
[null,"私はここで紹介した全部を使いこなしているわけではないですが、これだけのことができるということを認識してください"]
[null,"こういった内容を自動化できたら業務が楽になることは間違いありません"]
[]
[]
[]
[null,"①-2　マクロ（VBA）を学んで変わったこと"]
[]
[null,"★","大幅な作業時間の削減（30分かかっていた作業が5秒で終わる）"]
[null,"★","自分で操作することがなくなった（基本的にはボタン一つ押せば完了する）"]
[null,"★","余裕がうまれたことで、他の仕事に集中できるようになった"]
[null,"★","集中力が効率化を底上げし、さらなる効率化を促した"]
[null,"★","今まで6時間くらいかかっていた事務作業が、出社後1時間以内に全部終わる"]
[null,"★","基本的に定時まで仕事がもたない"]
[null,"★","帰ってから好きなことをする時間がたくさんある"]
[null,"★","家族との時間をもっと楽しめるようになった"]
[]
[null,"パッと思いつくだけでもコレだけあるので、実際はもっとたくさんの恩恵があるでしょう"]
[null,"コレは決して夢物語ではないんです"]
[]
[]
[]
[null,"①-3　私が実際に自動化した業務"]
[]
[null,"★","毎月更新しないといけないデータの更新内容を自動で計算"]
[null,"★","複数ファイルを開かなくても自動で内容を更新・調整してくれるマクロ"]
[null,"★","出荷に使うデータをCSVで抜き、必要な情報を加工して印刷まで全自動化"]
[null,"★","過去の膨大なデータを加工して割合の算出"]
[null,"★","日報のようなものに、出勤者の氏名を自動入力して印刷"]
[null,"★","別のファイルで作成した内容を本命のファイルに転写して調整"]
[null,"★","内容を全部更新しながら必要枚数分を自動印刷"]
[null,null,null,null,null,null,null,null,"などなど"]
[]
[null,"最初に作成したのは「複数ファイルを開かなくても自動で内容を更新・調整してくれるマクロ」でした"]
[null,"だいぶ時間はかかりましたが、これのおかげで大幅な時短に成功し、マクロ楽しいーーー！のきっかけに"]
[]
[null,"ボタン一つで業務があっという間に終わるのは快感でしかないですよ"]

{"sheet":"②変数","index":3,"n_rows":366,"n_cols":9,"rows_kept":366,"cut":false,"hidden":false,"merged":[[355,1,355,3],[354,1,354,3],[353,1,353,3],[352,1,352,3],[352,4,352,9],[312,1,314,8],[215,5,215,13],[216,5,216,13],[217,5,217,13],[218,5,218,13],[218,2,218,4],[217,2,217,4],[216,2,216,4],[215,2,215,4],[214,5,214,13],[208,2,208,4],[207,2,207,4],[207,5,207,13],[208,5,208,13],[213,2,213,4],[212,2,212,4],[211,2,211,4],[210,2,210,4],[209,2,209,4],[214,2,214,4],[209,5,209,13],[210,5,210,13],[211,5,211,13],[212,5,212,13],[213,5,213,13],[153,3,153,6],[154,3,154,6],[155,3,155,6],[156,3,156,6],[157,3,157,6],[154,1,157,1],[160,1,161,1],[161,3,161,6],[159,3,159,6],[160,3,160,6]]}
[null,"※これはすごく重要なことなので必ず覚えましょう！"]
[]
[null,"②変数とは何か"]
[null,"結論⇒【指定した名前で、データを記録・読み取りをする仕組み】のこと"]
[]
[]
[null,"②-1　変数の考え方"]
[]
[null,"数学で出てくる変数とは違う意味なので注意！"]
[null,"※値を入れる「器」のようなイメージで大丈夫です"]
[]
[null,"例："]
[]
[null,"この場合、「a」という変数に「10」という値を代入しています"]
[null,"「左側の変数の器に、右側の値を代入（記録）する」と覚えましょう"]
[]
[null,"「＝」記号を使うことで変数の代入が成立します"]
[null,"ここで使う「＝」記号は「等しい」という意味ではありません"]
[]
[null,"強いて言うなら",null,null,null,"このように左矢印の感覚に近いです"]
[]
[]
[]
[null,"②-2　変数の使い方"]
[]
[null,"代入した変数を使う時は、そのまま変数名を記入すればOK"]
[]
[null,"例："]
[]
[null,"Cells（1,1）⇒1行目の1列目のセル（A1セルのこと）"]
[null,null,null,".Value　⇒値"]
[null,null,null,null,"=a ⇒a(10)を代入"]
[null,"これで、A1セルに「10」という値が表示されます"]
[null,"つなげて読むと「A1セルの値に、aという変数を代入する」となります"]
[]
[null," "]
[]
[null,"②-3　変数の使い方（応用編）"]
[]
[null,"混乱しがちな使い方として、次のようなものがあります"]
[]
[]
[null,"結論から言うと、最終的にaに代入される数は「20」になります"]
[]
[]
[]
[null,"左のaは最終値"]
[null,null,"右のaは現在の代入値（10）"]
[null,null,null,"そこに+10する",null,"⇒これで計20となります"]
[null,"つなげて読むと「aという変数（最終値）に、aという変数（現在値）に+10した値を代入する」となります"]
[]
[]
[]
[null,"②-4　変数を使う場面の例"]
[]
["★","1つ目の例が「同じ値を何回も使う」時"]
[null,"例えば、"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"↓以下のようなコードで実現できます"]
[]
[]
[]
[]
[]
[]
[]
[null,"Worksheets(\"シート2\").Cells(2, 1).Value = Worksheets(\"シート1\").Cells(2, 1).Value"]
[null,"ワークシート”シート2”のセル2行目1列目（A2セル）の値に",null,null,null,null,null,"ワークシート”シート1”のセル2行目1列目（A2セル）の値を代入"]
[]
[null,"これで、2行目のA～C列をシート1⇒シート2に転写するというコードになっています"]
[]
[null,"ただし、このコードを作成したあとにシート名を変更した場合、"]
[null,"シート名の”シート1”と”シート2”を一つずつ修正する手間が発生してしまいます。"]
[]
[null,"そこで登場するのが「変数」です。例を以下に↓"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"↑のように変数に代入することで、変更箇所をまとめることができて修正が時短できます"]
[]
[]
["★","2つ目の例が「For文（ループ処理）を使う」時"]
[null,"ループ処理とは、同じ動作を繰り返すことを指します"]
[null,"基本的にループ処理をする時は変数を使う必要があります"]
[]
[]
[]
[null,"例えば、"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"↑このコードは変数「i」に指定した「2 to 6（2から6）」が繰り返されます"]
[null,"下部のNextまで処理が進んだら、またForに戻って上から処理を繰り返します"]
[null,"Forに戻るたびに「i」がカウントアップされ、2⇒3⇒4⇒5⇒6と順次代入されます"]
[]
[null,"指定したToの右側の数字（今回で言うと6）がMaxに達したら処理が終了"]
[null,"「i」という変数をセルの行指定の場所に置いているため、2行目⇒3行目…と進行していくコードです"]
[null,"このコードを実行すると、A2セルからC6セルまでの範囲が転写されます"]
[]
[]
[null,"ちなみに…"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このようにForの中にForを入れることも可能です"]
[null,"このコードを実行しても、同じくA2セルからC6セルまでの範囲が転写されます"]
[null,"少し難しくなりますが、変数「i」が2の時に変数「j」が1から3までを繰り返し、"]
[null,"変数「i」が3の時にも変数「j」が1から3までを繰り返し……となり、変数「i」が6になるまで続きます"]
[]
[null,"こうすれば記述が減るだけでなく、上で紹介したシート名の変数をなくすことも可能"]
[null,"できるだけ見た目がスッキリするほうがメンテナンスも楽になります"]
[]
[]
[]
[null,"②-5　変数を使う時の注意点"]
[]
["★","変数には使えない文字がある"]
[null,"基本ルールとしては、"]
[null,"①英大文字、英子文字、数字、アンダーバー、ひらがな、カタカナ、漢字が使えます"]
[null,"②ただし、1文字目には、数字やアンダーバーは使えません"]
[]
[null,null,"変数名","補足"]
[null,"○","x"]
[null,null,"ma_x"]
[null,null,"x2"]
[null,null,"エッ句素","日本語でもOK"]
[]
[null,null,"変数名","補足"]
[null,"×","_x","1文字目が「アンダーバー」なのでダメ"]
[null,null,"2x","1文字目が「数字」なのでダメ"]
[]
[]
["★","変数の名前はわかりやすいものにしよう"]
[null,"コードが長くなるほど、解読に時間がかかるようになります"]
[null,"また、その変数が何の値をもたせているのかが理解しにくいとメンテナンスも大変です"]
[null,"自分一人だけで使うマクロならともかく、他の人がわかるようにするのも仕事のうちです"]
[]
[null,"できれば、理解しやすいように短すぎない変数名にすることをおススメ"]
[null,"あまりにも記述が大変すぎるようなら「日本語名の変数にする」というのもアリです"]
[null,"ただし、以下のメリット・デメリットがあるため留意してください"]
[]
[null,"メリット"]
[null,"何をしている変数なのかがすぐに理解できる"]
[null,"コメントを残しておかなくてもメンテナンスが簡単"]
[null,"※コメントとは、"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このように、コードの意味を書いておくことで解読を容易にするためのものです"]
[null,"マクロ実行時、コメント（緑色の文字部分）は実行結果に影響を与えません"]
[null,"コメントの開始には「’」を入力する必要があります"]
[]
[null,"デメリット"]
[null,"日本語を読めない人には伝わらない"]
[null,"変換しながらの入力が手間"]
[null,"文字コードの問題で使えないものもある"]
[]
[null,"変数が英語でも日本語でも機能はしますので、ここはお好みで大丈夫"]
[null,"ですが個人的には、最初のうちは英語表記に慣れておいたほうが良いと思います"]
[]
[]
[]
[null,"②-6　変数の「型」について"]
[]
[null,"最初のほうで「変数は器のようなもの」と説明しましたが、器に入れられる値には制限があります"]
[null,"リンゴは「果物」と書かれた器にしか入れられない、という感覚で大丈夫"]
[]
[null,"以下に一覧を↓"]
[null,"英語表記","型名",null,null,"備考"]
[null,"Boolean","ブール型",null,null,"TrueまたはFalse"]
[null,"Byte","バイト型",null,null,"0～255までの整数"]
[null,"Integer","整数型",null,null,"-32,768～32,767の整数"]
[null,"Long","長整数型",null,null,"-2,147,483,648～2,147,483,647の整数"]
[null,"Currency","通貨型",null,null,"-922,337,203,685,477.5808 ～ 922,337,203,685,477.5807の固定小数点数"]
[null,"Single","単精度浮動小数点数型",null,null,"負の値：約-3.4×10(38乗)～-1.4×10(-45乗)正の値：約1.4×10(-45乗)～1.8×10(38乗)"]
[null,"Double","倍精度浮動小数点数型",null,null,"負の値：約-1.8×10(308乗)～-4.0×10(-324乗)正の値：約4.9×10(-324乗)～1.8×10(308乗)"]
[null,"Date","日付型",null,null,"日付：西暦100年1月1日～西暦9999年12月31日時刻：0:00:00 ～ 23:59:59"]
[null,"String","文字列型",null,null,"任意の長さの文字列"]
[null,"Object","オブジェクト型",null,null,"オブジェクト"]
[null,"Variant","バリアント型",null,null,"すべてのデータ"]
[]
[null,"この中で特によく使うのが、長整数型の「Long」と文字列型の「String」です"]
[null,null,"整数を入れる変数 → 長整数型(Long)"]
[null,null,"文字列を入れる変数 → 文字列型(String)",null,null,null,"と覚えてください"]
[]
[null,"あと個人的によく使うのは"]
[null,null,"日付を指定する変数→日付型（Date）"]
[null,null,"便利屋の変数→バリアント型（Variant）",null,null,null,"の2つです"]
[]
[null,"基本的にはLongとStringだけ覚えていれば問題なくて、DateとVariantは覚えてると便利という感じですね"]
[null,"型が分からない時にVariantを使うことがあります。確かに便利なのですが、注意点も…"]
[null,"ちょっと順番が前後しますが、便利なVariant型を使う際の注意点を後でご紹介します"]
[]
[]
[]
[null,"②-7　変数の宣言について"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"赤丸の部分、Dimから始まる部分のことを「宣言」と呼びます"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"つまり「器の中に何を入れるかを決めるためだけに書かれるコードのこと」を指します"]
[]
[null,"結論から言うと、この「宣言」をしなくてもマクロ自体は機能します"]
[null,"ですが、これからマクロを覚えて好きなものを作りたいのであれば必ず宣言をしましょう"]
[]
[]
[null,"宣言をしなくても良いという人がいますが「宣言したほうが良い明確な理由」があります↓"]
[]
["★","エラーを探すのが鬼畜レベルで大変になる"]
[null,"例えば、エラーの要因の一つに「入力間違い」があります"]
[null,"宣言をしておくと、このエラー発生時にエラーメッセージが表示されて止まるため修正が開始できます"]
[]
[null,"しかし、宣言がないとエラーとして認識されないため、結果だけが狂ってしまうことに"]
[null,"数行程度のコードなら目視でも探せるでしょうが、本気のマクロは数百行になることも…"]
[null,"数百行のコードからエラーの原因を見つける自信と体力と根性がない人は宣言をしましょう"]
[]
[]
[null,"ちなみに、宣言をしなくても良いという人の思考が以下↓"]
[]
["★","変数を宣言しなくても使える設定がベースだから"]
[null,"「変数の宣言を強制する」というオプションがあるのですが、初期状態ではこれがオフになっています"]
[null,"初期状態がオフだから使わなくて良いという「根拠もない乱暴なだけ」の理由で言う人がいますが宣言はしたほうが良いです"]
[]
[null,"設定方法は以下↓"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"Alt+F11でVBE画面を開く"]
[null,"VBE画面⇒ツール⇒オプション　を選択"]
[]
[]
[]
[null,null,null,null,null,null,null,null,"変数の宣言を強制する　にチェックをいれてOK"]
[]
["★","宣言をすると動かないから"]
[null,"VBAの初心者が頑張ってコードを書こうとするとき、参考にするのはネットの情報であることが多いです"]
[null,"ですが、初心者なのでコードの意味を理解できないまま使うこともあるでしょう"]
[]
[null,"その結果、宣言をしない状態であれば動いてしまうことがあります"]
[null,"そうなると「変数難しい。型とか意味わかんないし。面倒くさいな。動くんだったら宣言いらなくね？」という感情に…"]
[]
[null,"そうなった場合の大きなデメリットが"]
[null,"①コードを理解できないままだから修正ができない"]
[null,"②修正ができないから結果を毎回確認する手間が発生する（マクロの意味がない）"]
[null,"③エラーが発生している原因を探すのに膨大な時間がかかることになる"]
[]
[null,"変数も宣言も「型」を理解できないから難しく感じてしまうものです"]
[null,"変数宣言を強制する設定にして、自分でコードを書き、エラー内容を都度修正していく"]
[null,"このトライアンドエラーの繰り返しが上達までの最短ルートです"]
[]
[]
[null,"結論"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"②-8「Variant型」について"]
[]
[null,"ここまで「型と宣言」について説明しましたが、次にVariantという型について触れておきます"]
[]
[null,"Variantという型は「何にでも使える」万能の型です"]
[null,"もし型が難しくて理解できないならVariantを使って宣言しましょう"]
[]
[null,"しかも素敵なことに、Variant型は宣言の方法もすごく楽ちん"]
[]
[]
[]
[]
[]
[]
[]
[null,"繰り返しになりますが、宣言をすることでタイプミスによる重大なエラーを回避できます"]
[null,"だから「変数の宣言を強制する」をオンにして、必ず宣言しましょう"]
[null,"最初は適切な型を指定するのが難しいと思いますが、そんな時は型を全部Variant型にすればOK"]
[null,"そして余裕ができたら、改めて他の変数の型について学習しましょう"]
[]
[null,"ただし、Variant型にもデメリットがありますので紹介しておきます"]
[]
["★","Variant型を使うことのデメリット"]
[null,"1. マクロの実行速度が遅くなる"]
[null,"Variant型は、型の指定をするときに使用する記憶領域サイズが最も大きい型です"]
[]
[null,"型",null,null,"使用バイト数"]
[null,"長整数型(Long)",null,null,"4 バイト"]
[null," 文字列型(String)",null,null,"10 バイト + 文字列の長さ"]
[null,"バリアント型（Variant）",null,null,"22 バイト + 文字列の長さ (64 ビット システムでは 24 バイト)"]
[]
[null,"と言っても、遅くなるのは微々たるもの。通常使用にはさほど影響しません"]
[null,"「使用バイトが多いんだ」くらいの認識で大丈夫です"]
[]
[]
[null,"2. 誤動作を招く原因になる"]
[null,"例：数値として計算したいのに文字列として認識されてエラーが発生する"]
[]
[null,"何にでも対応できることが選択の幅を広げてしまうこともあります"]
[null,"これは数値として、これは文字列として、というように分かっているものは対応した型で指定するほうが良いです"]

{"sheet":"③環境","index":4,"n_rows":99,"n_cols":13,"rows_kept":99,"cut":false,"hidden":false,"merged":[[80,3,80,6],[84,3,84,6],[84,1,84,2],[80,1,80,2]]}
[]
[null,"③開始するための環境設定"]
[]
[null,"③-1　マクロ対応ファイルの作成方法"]
[]
[null,"通常のエクセルファイルを作成した場合、拡張子が「.xlsx」になっているはずです。"]
[]
[]
[]
[]
[]
[null,"マクロ対応ファイルにするためには、この拡張子を「.xlsm」にする必要があります。「.xlsx」のままではマクロが使えません！"]
[]
[null,null,null,null,null,"新規ファイルで作成する場合"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,"ファイルを保存する画面で拡張子の部分をクリックすると一覧が出ます"]
[null,null,null,null,null,"（バージョンによっては表示が違う）"]
[]
[]
[null,null,null,null,null,"既存ファイルをマクロ対応にする場合"]
[null,null,null,null,null,"パターン①：「名前をつけて保存」する"]
[null,null,null,null,null,"手順としては、新規ファイルを作成する場合と同じです"]
[]
[null,null,null,null,null,"パターン②：保存する際に案内が出る",null,null,null,"⇒案内に従ってください"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"③-2　開発タブの表示方法"]
[]
[null,"VBEを使うだけなら、開発タブは必要ありません。Alt+F11を押せば起動できるからです",null,null,null,null,null,null,null,null,null,null,"開発タブの表示方法"]
[null,null,null,null,null,null,null,null,null,null,null,null,"エクセルのオプション（Alt⇒T⇒O）で「リボンのユーザー設定」を選び、「開発」にチェックを入れる"]
[]
[]
[]
[]
[]
[null,"ですが、開発タブがあることで以下のメリットがあるため、個人的には表示を推奨します"]
[]
[null,"開発タブのメリット"]
[null,"フォームコントロールやActive X コントロールを使う際に便利"]
[]
[null,null,null,"開発タブ⇒挿入⇒○○コントロールで使える機能はけっこう便利です"]
[]
[null,null,null,"・ボタン設置"]
[null,null,null,"・チェックボックス設置"]
[null,null,null,"・バーコードの作成"]
[null,null,null,"・その他もろもろ"]
[]
[null,null,null,"などの機能があるため、表示しておいて損はないでしょう"]
[null,null,null,"（これ以外ではほとんど開発タブを使いません）"]
[]
[]
[]
[]
[]
[]
[null,"③-3　コントロール以外の開発タブ機能はショートカットから"]
[]
[null,"VBEの操作だけなら開発タブがなくてもできるようにしておきましょう"]
[null,"基本的にショートカットキーを使うほうが操作が速いからです"]
[]
[null,"基本操作",null,"機能",null,null,null,"使用頻度"]
[null,"Alt+F11",null,"Excel→VBEの切り替え",null,null,null,"★★★"]
[null,"Alt+F8",null,"Excel上でマクロを呼び出す",null,null,null,"★★"]
[]
[null,"VBEでの操作",null,"機能",null,null,null,"使用頻度"]
[null,"Alt+F11",null,"VBE→Excelの切り替え",null,null,null,"★★★"]
[null,"F5",null,"マクロの実行（一括）",null,null,null,"★★★"]
[null,"Ctrl＋C",null,"コピー",null,null,null,"★★★"]
[null,"Ctrl＋X",null,"切り取り",null,null,null,"★★★"]
[null,"Ctrl＋V",null,"貼り付け",null,null,null,"★★★"]
[null,"Tab",null,"インデント設定（一段階）　候補の決定",null,null,null,"★★★"]
[null,"Shift＋Tab",null,"インデント解除（一段階）",null,null,null,"★★★"]
[null,"ESC",null,"マクロの中断",null,null,null,"★★★"]
[null,"Ctrl＋S",null,"保存",null,null,null,"★★★"]
[null,"F8",null,"マクロの実行（1行ずつ）",null,null,null,"★★"]
[null,"Alt→I→M",null,"標準モジュールの挿入",null,null,null,"★"]
[null,"Ctrl+Y",null,"1行削除（やり直しがきかない）",null,null,null,"★"]
[null,"Alt→T→O",null,"オプション",null,null,null,"★"]
[null,"Alt→R→R",null,"マクロ実行のリセット",null,null,null,"★"]

{"sheet":"④基礎","index":5,"n_rows":137,"n_cols":10,"rows_kept":137,"cut":false,"hidden":false,"merged":[[83,8,85,17],[87,8,90,17],[78,8,81,17]]}
[]
[null,"④基礎知識について"]
[]
[null,"④-1　VBEの各ウィンドウ"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"④-2　各モジュールについて"]
[]
[null,"コードを書くために使う場所として「モジュール」を使用します。図書館に並んだ本がモジュールだと思ってもらえればOKです"]
[]
[]
[null,null,null,"この並んだ本の一つ一つが「モジュール」で、モジュールという本にVBAという言語で中身を書いていき、完成したものが「マクロ」です"]
[]
[null,null,null,"このモジュールには種類があり、それぞれに特徴があります",null,null,null,null,null,"※基本的には標準モジュールだけ理解できればマクロを作成できます"]
[]
[null,null,null,null,null,null,null,"・ユーザーフォーム"]
[null,null,null,null,null,null,null,null,"ユーザーインターフェイスを作成するのに使用するモジュールです。\nユーザーインターフェイスとは、ダイアログボックスなど値を入力したり設定したりするための画面のこと。\nモジュールという名前はついていませんが、モジュールの一種です。"]
[]
[]
[]
[null,null,null,null,null,null,null,"・標準モジュール"]
[null,null,null,null,null,null,null,null,"プログラムを記述するのに使用するモジュールです。\nVBAのプログラムを作成する場合、この標準モジュールを軸にプログラムを作成していくのが基本です。\nマクロを作成した場合も、この標準モジュールにプログラムが記録されます。"]
[]
[null,null,"モジュールは「挿入タブ」から新規作成できます"]
[null,null,null,null,null,null,null,"・クラスモジュール"]
[null,null,null,null,null,null,null,null,"「クラス」と呼ばれるオブジェクトを定義するのに使用するモジュールです。\nクラスモジュールを使用せずに標準モジュールだけでもプログラムは作成できます。\n少し「高度」な概念なので、入門時点では名前を頭の隅にとどめておく程度で構いません。"]
[]
[]
[]
[]
[]
[]
[null,"④-3　「プロシージャ」と「ステートメントについて」"]
[]
[null,"マクロを作成する時の記述単位として重要なのが「プロシージャ」と「ステートメント」です"]
[null,null,"プロシージャ・・・「Subから始まってEnd Subで終わる、ひとくくりの手順」のこと"]
[null,null,"ステートメント・・・「プロシージャを構成する最小単位で、一つの命令文」のこと"]
[null,"↓これ私が実際に作ったマクロの一部です"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"マクロは基本ルールとして「上から順に」処理されていきます"]
[null,"上にあるプロシージャから処理されるため、順番を間違えると機能しません"]
[null,"これはステートメントも一緒で、書く順番を間違えるとエラーの原因になります"]
[]
[null,"作成しながら、または修正を加えた際にプロシージャ単位で動作を確認したい時があります"]
[null,"そんな時は「F5」でプロシージャ単位のマクロ起動ができるため覚えておきましょう（けっこう頻繁に使います）"]

{"sheet":"⑤注意","index":6,"n_rows":379,"n_cols":13,"rows_kept":379,"cut":false,"hidden":false,"merged":[[120,1,121,3],[120,12,121,14]]}
[]
[null,"⑤作成時の注意ポイントについて"]
[]
[null,"⑤-1　変数の宣言は必ずしよう"]
[]
[null,"これは「①変数について」でもお伝えしましたが、大事なことなのでもう一度言います"]
[null,"「変数の宣言」については色んな意見がありますが、私は以下の理由で宣言をしたほうが良いと思っています"]
[]
["★","エラーを探すのが鬼畜レベルで大変になる"]
[null,"宣言をすることの最大のメリットは「エラーの発見が容易になる」ことです"]
[null,"もしスペルミスなどで機能しないステートメントがあっても、宣言をしないとエラーにならずスルーされることがあります"]
[null,"結果、マクロが正常に動いたように見えても、出力される結果が誤ったものになってしまいます"]
[]
[null,"誤った結果が出るとどうなるか…"]
[null,null,"例えば、"]
[null,null,"・出力された金額が間違ってる資料を提出してしまい会社に大損害を与える"]
[null,null,"・使える時間を計算したのに誤った結果が出てしまい当日出荷の作業が終わらない"]
[null,null,"・管理していたはずの時間が狂ったせいで扶養枠内の制限を超えて仕事をさせてしまう"]
[null,null,null,null,null,null,null,null,null,null,null,null,"などなど…"]
[]
[null,"これを避ける唯一の手段が、エラーを修正すること"]
[null,"ですが、どこでエラーになっているのか分からないため、探すことすら難しい状態です"]
[]
[null,"数行～数十行ならまだしも、本気のマクロは数百行になることも…"]
[null,"そんな膨大な量のコードから探そうと思うと徹夜になるでしょう。それを避けるためにも宣言をしましょう！"]
[]
[]
["★","エラー解決の知識が増えないため、今後自分が苦労する"]
[null,"マクロを組んでいる時の最大の難関がエラー解決です"]
[null,"エラーの種類がとても多く、何を直せば修正できるのかわからないことも多々あります"]
[]
[null,"これはもう経験するしかありません。組む⇒エラーになる⇒解決する。これの繰り返しで上達していきます"]
[]
[null,"この手間が面倒なのは確かですが、これを避けて宣言しないままだとエラーへの対処能力が低いままになります"]
[null,"どう考えても苦労する未来しかないので、大変な事態を引き起こす前に経験を積みましょう"]
[]
[]
["★","変数の型を理解することで、頭を整理しながら作成できるようになる"]
[null,"マクロに限らず、適切なものを適切な形で使用することができれば、当然ですが最も効果的に使うことができます"]
[null,"これは変数も同じで、「なぜそれを使うのか」「それを使うとどうなるのか」「何を避ければ良いのか」がわかれば、ちゃんと理解したうえで作成できます"]
[]
[null,"頭が整理された状態で作成できればエラーが起こりにくいだけでなく、作成速度も上がるでしょう"]
[]
[]
[]
[null,"⑤-2　スペルミス、順番には注意しよう"]
[]
[null,"エラーの原因になりやすいのが、この2つ"]
[]
[null,"①スペルミス"]
[null,"これはよくあるミスですが、変数で指定したものが機能しないだけでなく、スペルミスだと気づかずにエラー原因を延々と探し続ける要因になることも…"]
[]
[null,null,null,null,null,null,null,null,"作成時の補完機能として、"]
[null,null,null,null,null,null,null,null,"・自動構文チェック"]
[null,null,null,null,null,null,null,null,"・自動メンバー表示"]
[null,null,null,null,null,null,null,null,"・自動クイックヒント"]
[null,null,null,null,null,null,null,null,"・自動データヒント",null,"などが備わっています"]
[]
[null,null,null,null,null,null,null,null,"ある程度の誤字はシステムが修正してくれますが、"]
[null,null,null,null,null,null,null,null,"変数に設定したものはシステムで判断できないこともあります"]
[]
[null,null,null,null,null,null,null,null,"スペルミスだと気づかずにエラー原因が特定できず、"]
[null,null,null,null,null,null,null,null,"数時間をムダにしたことがあるので気をつけてください"]
[]
[]
[]
[]
[null,"②ステートメントの順番"]
[null,"これは正しい処理結果が出ない時の原因になりやすいです"]
[null,"マクロは上から順番に処理されるため、ステートメントの位置が1行違うだけで処理結果が狂います"]
[]
[null,"その位置で処理すべき内容なのかをしっかり考えないと、いつまで経っても正しい処理をするマクロを組めません"]
[]
[]
[]
[null,"⑤-3　必ずコメントして処理内容を書いておこう"]
[]
[null,"コメントとは、コードと一緒に書いておきながらも処理されない文章のことです"]
[null,"一般的に「処理内容を理解しやすいようにする」目的で使われます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"基本的にコードは全部英語で書くため、慣れ親しんだ日本語でコメントしておくだけで解読にかかる時間がすごく減ります"]
[null,"作成したマクロを時間が経ってから見直した時に、何が書いてあるのかわからなくなった経験があるので、コメントすることをおススメします"]
[]
[]
[]
[null,"⑤-4　処理ごとに見やすいようにインデントを下げよう"]
[]
[null,"インデントとは「コードの書き始めを右方向にずらす」ものです"]
[null,"Tabキーを押せば簡単にインデントできますので、ぜひ使いましょう"]
[]
[null,"インデントあり",null,null,null,null,null,null,null,null,null,null,"インデントなし"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"インデントをつけることで、同じ縦列が処理単位になっているのが分かると思います（For～Next、If～End If）"]
[null,"見やすくなるので意識して使ってください！"]
[]
[]
[]
[null,"⑤-5　作成は少しずつ進めよう"]
[]
[null,"たくさんのコードを一気に書き上げると、エラーがあった時に対処が難しくなります"]
[null,"最悪の場合、エラー以下を全部書き直すハメになることも…"]
[]
[null,"そのため、少し書いてトライ⇒少し書いてトライ　を繰り返すと楽に進めることができます"]
[null,"F5キーでプロシージャ単位で簡単に起動できますので、どんどんトライして着実に書いていきましょう"]
[]
[]
[]
[null,"⑤-6　メッセージボックスやイミディエイトウィンドウを活用しよう"]
[]
[null,"エラーになる要因の大半は「記述ミスで値をうまく取得できない」というものです"]
[]
[null,"例えば…","データを取得して変数に代入し、その変数を別の処理で使いたい"]
[null,null,"でもデータを取得するセルの位置指定が間違っていて変数に代入されたのは関係ない値だった"]
[null,null,"値のタイプが違うことでエラーが発生しているが、その原因が「取得セルの位置違い」だと気づいていない"]
[]
[null,"例"]
[null,"↓これは”おまけ”というシートのA1セルの値（日付として宣言）をA3セルに転写するための簡単なコードです"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"↓ですが、セルの位置指定を間違えて隣の列を参照にしてしまった場合、エラーになります（今回は隣の”あ”を参照してしまった）"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"結論から言うと、参照先が日付ではなく”あ”という文字列だったためエラーになりました"]
[null,"（本来はDate型である日付を参照したいのにString型の文字列を参照してしまった）"]
[]
[null,"この例はすごくシンプルなのでわかりやすいですが、こういった指定ミスはけっこう多いものです（勘違いも含め）"]
[null,"コードの行数が増えれば増えるほど、位置指定ミスのような細かいミスは発見しづらいもの"]
[]
[null,"そんな時に活躍するのが、メッセージボックスとイミディエイトウィンドウです"]
[]
[null,"メッセージボックスとは"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このように”MsgBox　変数名”と書くことで、変数の値を確認することができます"]
[null,"変数の中身を確認したいことはけっこう多いので、積極的に使いましょう！"]
[]
[null,"イミディエイトウィンドウとは",null,null,null,null,null,null,null,"※イミディエイトウィンドウがない場合※"]
[null,null,null,null,null,null,null,null,null,"表示タブから表示させることができます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このように”Debug.Print　変数名”と書くことで、変数の値を確認することができます"]
[null,"表示される内容は指定した変数の値であるためメッセージボックスと一緒です"]
[null,"ですが、OKを押さないといけないメッセージボックスと違い、こちらはVBE画面で確認できるため、一手間少ないのが楽です"]
[]
[null,"どちらもエラー解決にすごく役立つため、これは必ず覚えておきましょう！！"]
[]
[]
[]
[null,"⑤-7　コードを全部覚えようとしなくて良い"]
[]
[null,"ハッキリ言います。初心者はコードの種類の多さと難解さに萎えるでしょう"]
[null,"しかも、コードの綴りを間違えたら即エラーになります"]
[]
[null,"私はこの問題を解決するために、メモ帳機能を使って、一度使ったコードを保管しています"]
[null,"使いたくなったらそこからコピペという感じですね"]
[]
[null,"いきなりコードをたくさん覚えるのではなく「いま必要なコードを調べて使う」というやり方のほうが圧倒的に良いでしょう"]
[null,"せっかく覚えようとしたのに気分が萎えちゃうともったいないですからね"]
[]
[]
[]
[null,"⑤-8　文字列は「”」で囲む必要がある"]
[]
[null,"例えば、メッセージボックスで”a”と表示したいとします"]
[]
[]
[null,null,null,null,null,null,null,null,"結果は何も表示されません"]
[]
[]
[]
[]
[null,"先ほど④-6でお伝えしましたが、メッセージボックスを使う場合は”MsgBox　変数”と書くのが基本です"]
[null,"つまり、この\"a\"は変数として認識されているわけです"]
[]
[null,"これを回避するために、「”」（ダブルクォーテーション）で囲む必要があります"]
[]
[]
[null,null,null,null,null,null,null,null,"無事に表示された"]
[]
[]
[]
[]
[]
[null,"これはメッセージボックスだけの話ではなく、コードを書く時の基本です"]
[null,"「文字列として認識してほしい時はダブルクォーテーションで囲む」と覚えてください"]
[]
[]
[]
[null,"⑤-9　「ファイルを開く」コードについて"]
[]
[null,"VBAコードの中でも、シンプルかつ頻繁に使うのが「ファイルを開く」ためのコードです"]
[null,"だからこそ、エラーが一番発生しやすいのも「ファイルを開く」という動作になります"]
[]
[null,"私もここにつまづいた経験があるので、これはしっかり紹介しておこうと思います"]
[]
[null,"「ファイルを開く」ためのコードでよく使うものは2種類"]
[null,null,"①ファイルパスを指定する方法",null,null,null,"※パス＝ファイルが置いてある場所のこと"]
[null,null,"②ダイアログから選択する方法"]
[]
[]
[null,"①ファイルパスを指定する方法"]
[null,null,null,null,null,"これが一番シンプルでわかりやすいコードです"]
[null,null,null,null,null,"しかし、ファイルの場所を「固定参照」するので、ファイルを移動すると参照できずエラーになります"]
[]
[]
[null,null,"↑これで言うと　\"C:\\〇〇〇.xlsx\"　の部分がファイルパスになります"]
[]
[null,"ファイルパスの取得方法は以下"]
[]
[null,null,null,null,null,"①対象ファイルの上でShift+右クリック"]
[null,null,null,null,null,"②出てきた一覧から「パスのコピー」を選択する"]
[null,null,null,null,null,"③コピーしたものをVBE画面に貼り付ける"]
[]
[]
[]
[]
[]
[]
[]
[null,"②ダイアログから選択する方法",null,null,"※このコードは汎用的に使えるので、まるまるコピーして使ってOKです"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このコードを実行すると「ファイルを開く」ダイアログが開きます"]
[]
[null,"ファイルを自分で選択できるので確実に開けますが、私はフルパスのほうが好きですｗ"]
[]
[]
[]
[]
["★","「同じ名前のブックを開こうとする」「ファイルが存在しない」⇒エラーになる"]
[]
[null,"ファイルを開くコードを作成する時に特に注意してほしいのが、この二つです"]
[null,"同じ名前のものを同時に開くことはできませんし、存在しないファイルを開くこともできません"]
[]
[null,"この二つを同時に回避できるエラー対策として、ファイルの存在と同名ブックの展開を確認してから開くようにするコードが便利です"]
[]
[]
[]
[null,null,null,null,null,null,null,null,"※このままコピペで使えます"]
[null,null,null,null,null,null,null,null,"←赤文字になっている部分を対象のファイルパスに変更してください！"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"⑤-10　VBAのマクロで何を自動化したいのかを書き出す"]
[]
[null,"初心者がマクロを組む時に当たりやすい壁が「何をしたいのか分からなくなる」というもの"]
[null,"作業に入る前に、まずは箇条書きレベルで良いので、マクロによって自動化したいことを書き出しましょう"]
[]
[null,"例：","CSVデータの「商品名」を別のエクセルに移して並び替えたい"]
[null,null,"「;」区切りでまとまっている文字列を一覧化したい"]
[null,null,"表に枠線をつけるようにしたい"]
[]
[null,"書き出したあとは、それらを自動化処理するためには、Excel上で具体的にどのような操作が必要なのかを考えます"]
[null,"こうして先に手順を書いておくことで、迷わずに作成できるようになるのでおススメです！"]
[]
[]
[]
[null,"⑤-11　マクロで実行した処理はやり直しできない"]
[]
[null,"エクセルには操作を記憶しておく機能があるため、Ctrl+Zや左巻き矢印で「元に戻す」という操作ができます"]
[null,"しかし、マクロで実行した処理に関しては「元に戻す」ことができないため、慎重に使いましょう"]

{"sheet":"⑥重要","index":7,"n_rows":482,"n_cols":9,"rows_kept":482,"cut":false,"hidden":false,"merged":[]}
[]
[null,"⑥マクロ作成の重要ポイント　～これさえ覚えればマクロは組める～"]
[]
[]
[null,"結論から言うと、"]
[null,"  繰り返し処理である「For文」　と　条件分岐処理である「If文」"]
[null,null,null,null,null,null,null,null,"の2つです"]
[]
[]
[null,"もちろんVBAコードにはいろいろあるので、この2つだけ覚えれば完璧というわけではありません"]
[null,"ただし、この2つを覚えるだけでも大半のものを作成可能になります"]
[null,"まずはこれらをしっかり理解しましょう。夢の自動化はここから始まります"]
[]
[]
[null,"⑥-1　繰り返し処理である「For文」"]
[]
[null,"繰り返し処理という名の通り、同じ動作を繰り返すのがFor文です"]
[]
[]
[null,null,null,null,null,"カウンタ変数・・・繰り返し処理をするための変数（変数を指定する必要があります）"]
[null,null,null,null,null,"初期値と終了値・・・そのままの意味"]
[null,null,null,null,null,"繰り返し処理・・・ループしている最中に処理したい内容"]
[]
[]
[]
[null,"ForからNextにたどりつくと初期値に１が加算され、再度Forから開始します。終了値を超えるまで繰り返されます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,"基本的にFor～Nextまでの構造は同じで"]
[null,null,null,null,null,null,null,"繰り返し処理の内容を変更することで"]
[null,null,null,null,null,null,null,"多様な処理をすることができます"]
[]
[]
[]
[]
[]
[]
[]
[]
["★","For文の中にFor文を入れる"]
[]
[null,"For文の中にFor文を入れることを入れ子（ネスト）といいます"]
[null,"外側のFor文が繰り返されるごとに内側のFor文の繰り返しがすべて実行されるものです"]
[null,"けっこう頻繁に使うので、しっかり覚えておきましょう"]
[]
[null,null,null,null,"①最初は外側のFor文から始まる"]
[null,null,null,null,"②次に内側のFor文処理を開始"]
[null,null,null,null,"③内側が終わったら最下段①のNextから先頭へ"]
[]
[null,null,null,null,"例として、①のForに「i = 1 to 5」②のForに「x = 1 to 5」が入った場合"]
[null,null,null,null,"②の5回ループを①によって5回ループすることになるため"]
[null,null,null,null,"②のループ回数は5×5＝25回ということになります"]
[]
[]
[]
[null,"使い道としては、例えば５行×５列のセルに文字列を入力する場面などに使えます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","カウンタの増減や間隔の指定にはStepを使う"]
[]
[null,"For文は繰り返しのたびに初期値に１が加算されますが、Stepを使うことで加算する値を変更できます"]
[null,"例えば、２ずつ加算する場合は下記のように書きます。初期値に１を設定しているので、1, 3, 5, 7, 9と奇数が表示されます"]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,"※これは例えば、二つおきに処理したい時に便利です"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"また、Stepにマイナス値を設定することで初期値を減算させることも可能です"]
[null,"例えば、下記は初期値に５を設定し、１ずつ減算しています"]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,"※これは例えば、上からではなく下から順に処理したい時に便利です"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","ループを途中で飛ばす、または抜けたい時に"]
[]
[null,"条件を満たしたらループを飛ばしたり、途中で抜けたいときって結構あります"]
[]
[null,"条件にあわせてループを飛ばしたいなら、If文を使いましょう"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"途中でループから完全に抜けるのであればExit Forを使います"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","ちょっと番外編　全要素を繰り返す「For Each文」の使い方"]
[]
[null,"配列やコレクションに含まれる全要素を繰り返したいときはFor Each文が最適"]
[null,"For文でも書けないことはないですが、For Each文では要素の数だけ繰り返してくれるのでとても便利です"]
[]
[]
[null,null,null,null,"※グループとして指定したい値を事前に変数に格納しておく必要があります"]
[]
[]
[]
[]
[null,"For Each文で最初に設定する変数にはVariant型かオブジェクト型しか使えないので要注意"]
[null,"例えば、配列の値をすべて表示する処理を挙げてみます"]
[null,"配列を用意し、各要素を一つずつ格納する変数を定義します"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","ちょっと番外編②　繰り返し回数が不明な場合に便利な「Do While ~ Loop文」の使い方"]
[]
[null,"繰り返し処理にはFor文のほかにもDo While ~ Loop文があります"]
[null,"Do While ~ Loop文は条件を満たしている間ループ処理させることが可能です"]
[]
[]
[]
[]
[]
[]
[]
[null,"例えば、A列の文字が”あ”だった場合だけ、右隣に”○”を入力するコードが以下になります"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"上記例では11行しかありませんが、実際は何行あろうと最後の行まで処理を続けてくれます"]
[]
[null,"このようにFor文でもDo While ~ Loop文でも繰り返し処理が書けますが、処理内容によって使い分けることをおススメします"]
[]
[]
["★","ちょっと番外編③　「For文」と「Do While ~ Loop文」の使いわけかた"]
[]
[null,"結論"]
[null,"ループ回数を指定したり、配列やコレクションの要素数分だけループさせたいときはFor文"]
[null,"繰り返し回数がわからなかったり、ループ回数に依存しない条件の場合はDo While ~ Loop文"]
[]
[null,"これめちゃくちゃ大事なので、慣れてきたら意識して使うようにしましょう！"]
[null,"最初のうちはとりあえず基本のFor文だけ使えれば問題ないと思います"]
[]
[]
[]
[null,"⑥-2　条件分岐処理である「If文」"]
[]
[null,"すごく簡単に言うと、○○だった場合には〇〇の処理、△△だった場合には△△の処理をする、という感じです"]
[null,"条件に合わせて処理を変えるため「条件分岐処理」となります"]
[null,"条件には、値の大小や同じ値かの比較が挙げられます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","条件が複数の場合はElseIf"]
[]
[null,"条件が複数ある場合はElseIf文で処理を分けられます。ElseIf文は一つだけでなく、いくつでも書けます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","If文とSelect Case文の使い分け"]
[]
[null,"Select Case文の特徴は「複数の条件分岐をスッキリ書くことができる」というもの"]
[null,"If文でも同様に書けますが、冗長なコードになりがちです。条件分岐が増えてきたらIf文ではなく、Select Case文を使うほうがキレイに書けます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"どちらでも機能するので好みの問題になりますが、書きやすい＝理解しやすいということなので覚えておきましょう"]
[]
[]
["★","値を比較するときは比較演算子"]
[]
[null,"条件式では値を比較する比較演算子が使われます。比較結果が真であればTrue、偽であればFalseが返されます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","文字列を比較する"]
[]
[null,"比較では数値だけじゃなく文字列を対象にすることもできます"]
[null,"大文字と小文字も区別する点には注意してください"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
["★","複数の条件に一致させるときは論理演算子"]
[]
[null,"複数の条件に一致させたいときは論理演算子を使います。演算子を組み合わせることで複雑な条件分岐にも対応できます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"すべての条件に一致させるならAnd演算子"]
[null,"例えば、19歳以上かつ65歳以下の人を判定したい場合は以下のようになります"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"ひとつでも条件を満たせばいいならOr演算子"]
[null,"条件が複数あるうちの一つでも満たせばいいならOr演算子を使います"]
[null,"例えば、下の表の中から出身が地球と月の人を選びたい場合は以下のようになります"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"条件を反転させるならNot演算子"]
[null,"条件に一致しないときだけ処理したいときは、Not演算子を使います。特定の条件を満たさないときだけ処理できます"]
[null,"例えば、下の表の中で地球出身じゃない人全員が転生して地球生まれになった場合は以下のようになります"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"ここまでの説明でFor文とIf文については理解できたと思いますが、実際に使ってみないと忘れるものです"]
[null,"このファイルに書いてあるのは大事なことばかりなので、いつでも見返せるようにしておきましょう！"]

{"sheet":"⑦便利","index":8,"n_rows":171,"n_cols":13,"rows_kept":171,"cut":false,"hidden":false,"merged":[[137,1,137,4],[137,5,137,22]]}
[]
[null,"⑦　覚えておくと便利なもの"]
[]
[null,"これからお伝えするのは、初心者から脱したあたりで役立つ情報です"]
[null,"まずは機能するマクロを組めるようになってから、このページの内容を確認すれば大丈夫です"]
[]
[]
[null,"⑦-1　変数の適用範囲について"]
[]
[null,"変数を宣言することでエラー回避ができることはお伝えしましたが、今回は変数の適用範囲についてお伝えします"]
[null,"変数は「書く場所」「書き方」によって使える範囲が変わります"]
[]
[]
[]
[]
[]
[]
[null,"基本的に、VBAは以下のような構成でデータができています"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"Dimでプロシージャ内"]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,null,"最も覚えやすいのが、この方法"]
[null,null,null,null,null,null,null,null,null,null,null,null,"Dimでプロシージャの中に宣言すると、対象のプロシージャ内のみに適用されます"]
[null,null,null,null,null,null,null,null,null,null,null,null,"毎回指定しないといけないのが手間"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"Dimでプロシージャ外"]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,null,"次のパターンが、プロシージャの外側（上部）に宣言する方法"]
[null,null,null,null,null,null,null,null,null,null,null,null,"プロシージャを含むモジュール全体で適用されます"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"Publicでプロシージャ外"]
[null,"これはすごく広範囲に適用される宣言の方法です"]
[]
[null,"まず、先頭をPublicにして宣言することで「プロジェクト全体」に影響を及ぼすことができます"]
[null,"つまり、よく使う変数に関してはPublicをつけることで宣言の手間を減らせるということ"]
[]
[null,"このPublicを使った変数宣言は「グローバル変数」とも呼ばれています"]
[null,"グローバル変数を使う際は、変数専用の標準モジュールを作成して管理するのが最も楽です"]
[]
[null,"グローバル変数は説明が多くなるため次項で説明します"]
[]
[]
[]
[null,"⑦-2　グローバル変数について"]
[]
[null,"グローバル変数とは、どこからでもアクセスできる変数のことです"]
[null,"複数のSub・Functionをまたいで同じ変数を使うことができるので、よく使う変数はグローバル変数にしておくのがおすすめ"]
[]
[null,"グローバル変数を定義する方法"]
[null,"標準モジュールにPublicをつけて変数宣言するだけで、簡単にグローバル変数を作ることができます"]
[]
[]
[]
[]
[null,"Constは「定数」の意味で、Constをつけた変数・定数は後から値が変更できなくなります"]
[]
[null,"シート名、設定シートの情報、消費税率、部署名、会社名など、よく使う変数はグローバル変数にしておくのがおすすめ"]
[]
[]
[null,"グローバル変数のデメリット"]
[null,"ここまでの説明で「どこからでも使えるほうが便利だし、全部グローバルで良いよね？」と思った方への注意点"]
[null,"どこからでも使える＝どこからでも書き換えが可能になる　ということです"]
[]
[null,"せっかくグローバル変数を専用モジュールで管理してても、プロシージャ内で別の値を代入すると上書きすることが可能です"]
[null,"そうなってしまうと面倒な事態に繋がるおそれがあるため、防止するためのテクニックをご紹介します"]
[]
[]
[null,"グローバル変数を使いこなすためのテクニック"]
[null,"面倒な事態を避けるためのテクニックとは「値書き換えができない定数のみで使う」ことです"]
[]
[null,null,null,null,null,null,null,null,null,null,null,"Public⇒グローバル変数指定"]
[null,null,null,null,null,null,null,null,null,null,null,"Const⇒定数として宣言"]
[]
[null,null,null,null,null,null,null,null,null,null,null,"glb⇒開発時に変数を見つけやすくするためのもの"]
[null,null,null,null,null,null,null,null,null,null,null,"↑これに関しては利便性の追求の結果であって、ルールとかではありません"]
[null,null,null,null,null,null,null,null,null,null,null,"VBAでは途中まで文字を入力してから「Ctrl+スペース」を押すことで入力候補が出せます"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,"入力候補が出てくることで入力の手間が省けますし、入力ミス防止にもつながります"]
[]
[null,"よく使う変数をまとめておくことで、同じコードを複数の処理で書く必要がなくなるため、速く正確に書くことができるようになります"]
[null,"また、修正時も「よく使う定数一覧」を修正するだけなので、メンテナンスも楽ですね"]
[]
[]
[]
[null,"⑦-3　イベントプロシージャについて"]
[]
[null,"VBAで書いたマクロは基本的に自分の意思で実行しますが、ある特定の動作に反応して自動実行してくれる機能があります"]
[null,"それがイベントプロシージャ。慣れるとすごく便利な機能なので、作成に慣れてきたら触ってみてください"]
[]
[null,"イベント名",null,null,null,"内容"]
[null,null,null,null,"Activate","ブック、ワークシート、グラフ シート、または埋め込みグラフがアクティブになったときに発生します。"]
[null,null,null,null,"AddinInstall","ブックがアドインとして組み込まれたときに発生します。"]
[null,null,null,null,"AddinUninstall","ブックのアドインとして組み込みを解除したときに発生します。"]
[null,null,null,null,"AfterXmlExport","Microsoft Office Excelがデータを保存するか、指定されたワークブックからXMLデータファイルへのエクスポートを行った後で発生します。"]
[null,null,null,null,"AfterXmlImport","既存のXMLデータ接続が更新された後、または指定されたMicrosoft Office ExcelワークブックにXMLデータをインポートした後で発生します。"]
[null,null,null,null,"BeforeClose","ブックを閉じる前に発生します。"]
[null,null,null,null,"BeforePrint","ブックまたはその中に含まれる内容を印刷する前に発生します。"]
[null,null,null,null,"BeforeSave","ブックを保存する前に発生します。"]
[null,null,null,null,"BeforeXmlExport","Microsoft Office Excelがデータを保存する前、または指定されたワークブックからXMLデータファイルへのエクスポートを実行する前に発生します。"]
[null,null,null,null,"BeforeXmlImport","既存のXMLデータ接続を更新する前、または新しいXMLデータをMicrosoft Office Excelワークブックの中にインポートする前に発生します。"]
[null,null,null,null,"Deactivate","グラフ、ワークシート、またはブックが非アクティブになったときに発生します。"]
[null,null,null,null,"NewSheet","新しいシートをブックに作成したときに発生します。"]
[null,null,null,null,"Open","ブックを開いたときに発生します。"]
[null,null,null,null,"PivotTableCloseConnection","ピボットテーブルレポートのデータ ソースへの接続が閉じた後で発生します。"]
[null,null,null,null,"PivotTableOpenConnection","ピボットテーブルレポートのデータ ソースへの接続が開かれた後で発生します。"]
[null,null,null,null,"SheetActivate","シートがアクティブになったときに発生します。"]
[null,null,null,null,"SheetBeforeDoubleClick","既定のダブルクリックの操作の前にワークシートをダブルクリックしたときに発生します。"]
[null,null,null,null,"SheetBeforeRightClick","既定の右クリックの操作の前にワークシートを右クリックしたときに発生します。"]
[null,null,null,null,"SheetCalculate","ワークシートを再計算したりグラフでデータをプロットして変更した後に発生します。"]
[null,null,null,null,"SheetChange","ユーザーまたは外部リンクによりワークシートのセルが変更されるときに発生します。"]
[null,null,null,null,"SheetDeactivate","シートが非アクティブになったときに発生します。"]
[null,null,null,null,"SheetFollowHyperlink","Excel のハイパーリンクをクリックすると発生します。"]
[null,null,null,null,"SheetPivotTableUpdate","ピボットテーブルレポートのシートが更新された後に発生します。"]
[null,null,null,null,"SheetSelectionChange","いずれかのワークシートで選択範囲を変更したときに発生します。"]
[null,null,null,null,"Sync","ドキュメントワークスペースに含まれているワークシートのローカルコピーがサーバー上のコピーと同期されたときに発生します。"]
[null,null,null,null,"WindowActivate","ブックのウィンドウがアクティブになったときに発生します。"]
[null,null,null,null,"WindowDeactivate","ブックのウィンドウが非アクティブになったときに発生します。"]
[null,null,null,null,"WindowResize","ブックのウィンドウサイズを変更したときに発生します。"]
[]
[null,"私の場合はOpenでブックを開いた時に特定のシートをアクティブにしたり、BeforeCloseでファイルを閉じる前に自動保存したりするのに使っています"]
[null,"細かい手間をなくせるため、すっごく便利な機能です"]
[]
[null,"作り方は以下"]

{"sheet":"⑧体験","index":9,"n_rows":445,"n_cols":13,"rows_kept":445,"cut":false,"hidden":false,"merged":[]}
[]
[null,"⑧　基礎の体験"]
[]
[null,"ではここから、最も基本的な操作を一緒に体験していきましょう"]
[null,"実際に簡単なコードを書いてもらいます"]
[]
[null,"⑧-1　VBEを開いてみる"]
[]
[null,"最初にAlt+Ｆ11を押してみてください"]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,"この画面が出たと思います"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"開発タブがなくてもVBE自体はAlt+F11で開けます"]
[null,"もし開発タブから開きたい方は「③開始するための環境」で手順を確認してください"]
[]
[]
[]
[null,"⑧-2　モジュールを追加する"]
[]
[null,"次はコードを書くための「モジュール」を追加しましょう"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"※ちなみに、モジュールを消したい場合は以下の手順で行ってください"]
[]
[null,null,null,null,null,null,null,"①対象モジュール上で右クリック"]
[null,null,null,null,null,null,null,"②一覧から「〇〇の解放」を選択"]
[null,null,null,null,null,null,null,"③以下の確認画面が出るため「いいえ」を選択"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,"エクスポートとは内容を外部に保存しておくためのものです"]
[null,null,null,null,null,null,null,"モジュールを消したい時に保存することは恐らくない…はず"]
[]
[]
[]
[null,"⑧-3　プロシージャの大枠を入力する"]
[]
[null,"次はマクロの基本「プロシージャ」の大枠を書いてみましょう"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,"このSub～Endsubまでが一つのプロシージャです"]
[null,null,null,null,null,null,null,null,null,null,null,"testの横にある（）は引数を入れるもの。()の中は入力しなくても機能します"]
[null,null,null,null,null,null,null,null,null,null,null,null,"※引数は今は知らなくても良いだけで、ホントは便利なものです"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"⑧-4　変数を指定してみる"]
[]
[null,"では次に変数の指定をしてみましょう"]
[null,"下のように記入してみてください"]
[]
[null,null,null,null,null,null,null,null,null,null,"ポイント"]
[null,null,null,null,null,null,null,null,null,null,"・記入するときはTabキーでインデントを下げる"]
[null,null,null,null,null,null,null,null,null,null,"・違う内容を記入する時は空白行をあける"]
[null,null,null,null,null,null,null,null,null,null,"・入力は基本的に全部半角で"]
[null,null,null,null,null,null,null,null,null,null,"・日本語や全角で入力したい場合は「”　”」で囲う"]
[]
[]
[]
[null,"このコードを書くことで、今から記入するためのワークシートを指定することができました"]
[null,"wsAという変数に”テスト”というシートを代入したのは、今後の記入を減らすためです"]
[]
[]
[]
[]
[]
[null,"上段が変数を使用して書いたコードで、下段が変数を使用せずに書いたもの"]
[null,"どちらもほぼ同じ動作（abの違いだけ）をしますが、上段のほうが圧倒的に書くのが楽ですよね"]
[null,"こういうのが今後数行・数十行と続くため、一行あたりの記入量を減らすようにしましょう"]
[]
[]
[]
[null,"⑧-5　処理を指示するステートメントを書いてみる"]
[]
[null,"ステートメントとは一行（一つの処理単位）のこと"]
[null,"次は実際に処理をさせるためのコードを書いてみましょう"]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,"赤枠で囲った部分を続けて書いてみてください"]
[]
[]
[]
[]
[null,"このコードは"]
[null,null,"wsA.Activate"]
[null,null,"変数に格納したシート（今回は”テスト”というシート）を"]
[null,null,null,"アクティブにする（対象のシートを表示する）"]
[]
[]
[null,null,"wsA.Cells(1, 1).Value = \"a\""]
[null,null,"変数に格納したシート（今回は”テスト”というシート）の"]
[null,null,null,"1行目A列の"]
[null,null,null,null,null,"値　に"]
[null,null,null,null,null,null,"\"a\"という文字を代入する",null,null,null,"と書いています"]
[]
[null,"ちなみにcells(1,1)という指定はcells（行番号,列番号）という意味です"]
[null,"行番号は数字なのでわかりやすいと思いますが、列番号はA＝1、B＝2、C＝3…XFD＝16384　となっており、アルファベットを順番に数字に置き換えています"]
[]
[]
[]
[null,"⑧-6　マクロを動かしてみる"]
[]
[null,"これですごく簡単なコードの作成が完了しました"]
[null,"では実際に動かしてみましょう"]
[]
[null,"まず最初に、テストというタブを開いてA1セルに何も書かれていないことを確認してください"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"確認が済んだらAlt+F11を押してVBEの画面をアクティブにし、F5を押してみてください"]
[]
[null,"下画像のように”a”という文字がA1セルに入力されていたら成功です！"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"⑧-7　プロシージャを追加してみる"]
[]
[null,"F5キーを押すことでプロシージャ単位でマクロを実行できます"]
[null,"これを体験するために、プロシージャを追加で書いてみましょう"]
[]
[null,"先ほど書いたコードをまるっと全部コピーし、EndSubから下に向かって一行か二行の空白を空けて下に貼り付けてください"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,"貼り付けた瞬間に、このように線が引かれます"]
[null,null,null,null,null,null,null,null,null,"これがプロシージャを分ける線で、自動で引かれるようになっています"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"ただし、このままだと使えないので、下の画像のように修正を加えてください"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,"VBAでは同じプロシージャ名を使うことができません"]
[null,null,null,null,null,null,null,null,null,"全く同じ内容のコードであっても、名前を変更する必要があります"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"これで準備が完了しました。早速、新しく追加したtest2のコードを使ってみましょう！"]
[]
[null,"コードをプロシージャ単位で使うためには、使用したいプロシージャの中を選択する必要があります"]
[null,"赤枠のプロシージャ内であればどこでも良いので、カーソルが入った状態にしてください"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"そのままF5キーを押すと、”テスト”シートのA1セルが”ｂ”になっていると思います"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"何回か連続して各プロシージャ内で交互にF5キーを押してみてください"]
[null,"a⇒b⇒a⇒b⇒a⇒b⇒a⇒b　と表示が切り替わるのが確認できると思います"]
[]
[]
[]
[null,"⑧-8　ステートメントを書き換えてみる"]
[]
[null,"VBAでコードを書く際は、全部を一から入力していたら時間がかかりすぎます"]
[null,"コピペして内容を変えるほうが圧倒的に速いので、次は実際に変更を体験してみましょう"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,"この赤丸の部分を変更してみてください"]
[]
[]
[null,"（1，1）となっている部分を変更すれば表示するセルを変更できます"]
[null,null,"例：","（1，2）⇒B1セル"]
[null,null,null,"（2，2）⇒B2セル"]
[null,null,null,"（10，10）⇒J10セル"]
[null,null,null,"（100，10）⇒J100セル"]
[]
[null,"また、\"a\"のa部分を変更することで表示する内容を変更できます"]
[]
[null,"何度か内容を書き換えてみて、思い通りの動きができるかを確認しましょう"]
[null,"動きの確認が終わったら、次に進むための準備として表示させた値を全部消しておいてください"]
[null,"探すのが面倒な方は、Ctrl+Aでシートを全選択したあと、Ctrl+テンキーのマイナスで全体を削除しましょう"]
[]
[]
[]
[null,"⑧-9　ボタンを設置してマクロを起動させる"]
[]
[null,"マクロを使用する際は、いちいちVBE画面を開いたりしません"]
[null,"実行するための方法はいろいろあるかもしれませんが、私は主にボタンを設置してマクロを起動させます"]
[]
[null,"ボタンを設置するためには「開発タブ」が必要なので、まだ出してない人は「③開始するための環境」タブを参考に出しておいてください"]
[null,"開発タブを出したら以下に進みましょう"]
[]
[]
[null,"まずはVBE画面を開き、先ほどまで使用していたコードを全部消して、まっさらな状態にしてください"]
[null,"そして、以下のコードをまるっとコピーして貼り付けてください"]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,"※これはテストシートのA1セル～C10セルに、1～100までの整数をランダム表示させるコードです"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"貼付けが完了したら、テストシートを開いてください"]
[null,"そして、以下手順に従ってフォームコントロールボタンを設置しましょう"]
[]
[]
[null,null,null,null,null,null,null,null,null,"①開発タブを選択する"]
[null,null,null,null,null,null,null,null,null,"②挿入を選択する"]
[null,null,null,null,null,null,null,null,null,"③フォームコントロールの「ボタン」を選択する"]
[null,null,null,null,null,null,null,null,null,"④好きなサイズでボタンを設置する"]
[]
[null,null,null,null,null,null,null,null,null,"フォームコントロールとActiveXコントロールの違い"]
[null,null,null,null,null,null,null,null,null,"（マクロを使うための「ボタン」機能の違いのみ説明）"]
[]
[null,null,null,null,null,null,null,null,null,"フォームコントロール"]
[null,null,null,null,null,null,null,null,null,"標準モジュールで作成したマクロを登録するための機能"]
[null,null,null,null,null,null,null,null,null,"基本的にこちらを使えば問題ない"]
[]
[null,null,null,null,null,null,null,null,null,"ActiveXコントロール"]
[null,null,null,null,null,null,null,null,null,"このコントロールボタン自体がマクロ機能になる"]
[null,null,null,null,null,null,null,null,null,"VBEで作成する必要があるため難易度は高い"]
[]
[]
[null,"好きなサイズでボタンを設置した直後に、以下の画面が出ると思います"]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,"←「ランダムな値を表示」を選択してOKを押す"]
[]
[null,null,null,null,null,null,null,null,null,"ここに表示されるのはSubのあとに書いた文字です"]
[null,null,null,null,null,null,null,null,null,"プロシージャを作成するほど項目が増えていきます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,"サイズはともかく、こんな状態になるはずです"]
[null,null,null,null,null,null,null,null,null,null,"これでマクロを登録できました"]
[]
[null,"いま作ったボタンを何回か押してみてください。押すたびに数字が変わるはずです"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"ちなみにこのボタンですが、一度設置した後に動かしたい場合は以下の手順で行ってください"]
[null,"普通に選択してもマクロが実行されるだけで移動はできません"]
[]
[]
[null,null,null,null,null,null,null,null,null,"①ボタン上で右クリック"]
[null,null,null,null,null,null,null,null,null,"②右クリックメニューが表示されたら、ボタンでもメニューでもない場所を左クリック"]
[null,null,null,null,null,null,null,null,null,"③下の画像のような枠だけが表示されたら成功。左クリックでつまんで移動できるようになります"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"⑧-10　最後に"]
[]
[null,"これで最も基本的な操作は習得できたと思います"]
[null,"ここまでを理解できれば、あとはコードを覚えていくだけ"]
[]
[null,"ここから先は突き詰めればどんどん沼にハマれるくらい奥深く自由です。それはまるで「シームレスのオープンワールドゲーム」のごとく"]
[null,"迷う可能性がかなり高いので、一つだけアドバイスを"]
[]
[null,"「自分が何を作りたいのか言語化できるようにする」これを忘れないでください"]
[null,"この意識があれば、迷った時の指針になるはずです"]
[]
[null,"では次は例題を出します。これを解いていくことで基礎はある程度理解できるでしょう"]

{"sheet":"⑨例題","index":10,"n_rows":58,"n_cols":14,"rows_kept":58,"cut":false,"hidden":false,"merged":[]}
[]
[null,"⑨　例題"]
[]
[null,"ここからは例題を出していきます"]
[null,"なお、この例題はコードを読むこと・書くこと・考えることに慣れてもらうことが目的です"]
[]
[null,"問題文はVBE画面の「例題」というモジュール内に書いておきます"]
[null,"そのまま例題モジュールの中にコードを記入し、機能するコードを完成させてください"]
[null,"コードが書けたら、F5キーを使ってプロシージャ単位で起動してください"]
[]
[null,"「回答例」というモジュールに参考用に回答例を書きますが、機能するコードを書けるまでは見ないことをおススメします"]
[null,"自ら悩んで考えたほうが自分のためになりますので、問題をクリアしたら回答例を見て参考にするほうが良いでしょう"]
[]
[]
[null,"⑨-1　書き方のヒント"]
[]
[null,"まず最初に、VBAの基本構文をご紹介します"]
[]
[null,null,"ThisWorkbook.Worksheets(\"①\").cells(②,③).value"]
[null,null,"このワークブックの",null,null,"①というシートの",null,null,"②行目③列目の",null,null,"値","と読みます"]
[]
[]
[null,null,"この中が大きく変わることはありません。強いて言うなら変数に置き換えるくらいです"]
[null,null,"サイズの大きいものが左側から順番に並んでいると思えば大丈夫です（ブック→シート→セルの順）"]
[]
[]
[null,"最後のValueの部分だけは頻繁に変わります。ここには平たく言うと「動作」が入ります"]
[null,"正確にはプロパティとかメソッドと呼ばれますが……今は難しいため「動作」だと思えば十分です"]
[null,"値を取得する・行や列番号を表す・選択する・削除する・挿入する　などいろいろあります"]
[null,"上記のValueは「値を取得する」という動作になります"]
[]
[]
[null,"次に、キーポイントとなるコードをいくつか紹介しておきます"]
[null,"宣言・指定"]
[null,"Dim 〇〇 As Worksheet",null,null,null,"〇〇という変数がワークシートであることを宣言しています"]
[null,"Dim 〇〇 As String",null,null,null,"〇〇という変数が文字列型であることを宣言しています"]
[null,"Dim 〇〇 As Long",null,null,null,"〇〇という変数が長整数型であることを宣言しています"]
[]
[null,"Set 〇〇 = ThisWorkbook　　　　　　　　",null,null,null,null,null,"〇〇という変数に、このワークブックを代入（指定）しています"]
[null,"Set △△ = 〇〇.Worksheets(\"シート名\")",null,null,null,null,null,"△△という変数に、〇〇（上で指定したワークブック）というブックのワークシート「シート名」を代入しています"]
[]
[]
[null,"処理関係"]
[null,"〇〇.Activate",null,null,"〇〇という変数に入れたものをアクティブにします"]
[]
[null,"〇〇.Rows(△).Delete",null,null,null,"〇〇という変数に入れた対象の「△番目の行」を行ごと消去します"]
[null,"〇〇.Cells(△, ☆).ClearContents",null,null,null,null,"〇〇という変数に入れた対象の「△番目の行の☆番目の列のセル」を値消去します"]
[null,"〇〇.Cells(△, ☆).ClearFormats",null,null,null,null,"〇〇という変数に入れた対象の「△番目の行の☆番目の列のセル」を書式消去します"]
[null,"〇〇.range(\"セル範囲\").ClearContents",null,null,null,null,null,"〇〇という変数に入れた対象の「指定したセル範囲」を値消去します（セル指定の別方法）"]
[null,null,"例：","wsA.range(\"A:C\").ClearContents"]
[]
[null,"〇〇.Cells(1, Columns.Count).End(xlToLeft).Column",null,null,null,null,null,null,null,"〇〇という変数に入れた対象の「一番右のセル情報」を取得します"]
[null,null,"⇒","〇〇.Cells(1, Columns.Count).End(xlToLeft).Column",null,null,null,null,null,null,null,null,null,"青文字は固定"]
[null,null,null,"このコードは、シートの右端まで一度行ってから左に戻り、突き当たった最初のセルを取得するというものです"]
[]
[null,"〇〇.Cells(Rows.Count, 1).End(xlUp).Row",null,null,null,null,null,null,null,"〇〇という変数に入れた対象の「一番下のセル情報」を取得します"]
[null,null,"⇒","〇〇.Cells(Rows.Count, 1).End(xlUp).Row",null,null,null,null,null,null,null,"青文字は固定"]
[null,null,null,"このコードは、シートの下端まで一度行ってから上に戻り、突き当たった最初のセルを取得するというものです"]

{"sheet":"例題①","index":11,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[]}

{"sheet":"例題②","index":12,"n_rows":300,"n_cols":1,"rows_kept":300,"cut":false,"hidden":false,"merged":[]}
[1]
[2]
[3]
[4]
["〇"]
[6]
[7]
[8]
[9]
["〇"]
[11]
[12]
[13]
[14]
["〇"]
[16]
[17]
[18]
[19]
["〇"]
[21]
[22]
[23]
[24]
["〇"]
[26]
[27]
[28]
[29]
["〇"]
[31]
[32]
[33]
[34]
["〇"]
[36]
[37]
[38]
[39]
["〇"]
[41]
[42]
[43]
[44]
["〇"]
[46]
[47]
[48]
[49]
["〇"]
[51]
[52]
[53]
[54]
["〇"]
[56]
[57]
[58]
[59]
["〇"]
[61]
[62]
[63]
[64]
["〇"]
[66]
[67]
[68]
[69]
["〇"]
[71]
[72]
[73]
[74]
["〇"]
[76]
[77]
[78]
[79]
["〇"]
[81]
[82]
[83]
[84]
["〇"]
[86]
[87]
[88]
[89]
["〇"]
[91]
[92]
[93]
[94]
["〇"]
[96]
[97]
[98]
[99]
["〇"]
[101]
[102]
[103]
[104]
["〇"]
[106]
[107]
[108]
[109]
["〇"]
[111]
[112]
[113]
[114]
["〇"]
[116]
[117]
[118]
[119]
["〇"]
[121]
[122]
[123]
[124]
["〇"]
[126]
[127]
[128]
[129]
["〇"]
[131]
[132]
[133]
[134]
["〇"]
[136]
[137]
[138]
[139]
["〇"]
[141]
[142]
[143]
[144]
["〇"]
[146]
[147]
[148]
[149]
["〇"]
[151]
[152]
[153]
[154]
["〇"]
[156]
[157]
[158]
[159]
["〇"]
[161]
[162]
[163]
[164]
["〇"]
[166]
[167]
[168]
[169]
["〇"]
[171]
[172]
[173]
[174]
["〇"]
[176]
[177]
[178]
[179]
["〇"]
[181]
[182]
[183]
[184]
["〇"]
[186]
[187]
[188]
[189]
["〇"]
[191]
[192]
[193]
[194]
["〇"]
[196]
[197]
[198]
[199]
["〇"]
[201]
[202]
[203]
[204]
["〇"]
[206]
[207]
[208]
[209]
["〇"]
[211]
[212]
[213]
[214]
["〇"]
[216]
[217]
[218]
[219]
["〇"]
[221]
[222]
[223]
[224]
["〇"]
[226]
[227]
[228]
[229]
["〇"]
[231]
[232]
[233]
[234]
["〇"]
[236]
[237]
[238]
[239]
["〇"]
[241]
[242]
[243]
[244]
["〇"]
[246]
[247]
[248]
[249]
["〇"]
[251]
[252]
[253]
[254]
["〇"]
[256]
[257]
[258]
[259]
["〇"]
[261]
[262]
[263]
[264]
["〇"]
[266]
[267]
[268]
[269]
["〇"]
[271]
[272]
[273]
[274]
["〇"]
[276]
[277]
[278]
[279]
["〇"]
[281]
[282]
[283]
[284]
["〇"]
[286]
[287]
[288]
[289]
["〇"]
[291]
[292]
[293]
[294]
["〇"]
[296]
[297]
[298]
[299]
["〇"]

{"sheet":"⑩基礎知識","index":13,"n_rows":218,"n_cols":9,"rows_kept":218,"cut":false,"hidden":false,"merged":[]}
[]
[null,"⑩　AIを使ったマクロ作成方法　基礎知識"]
[]
[null,"マクロ作成の一番の難関が「エラーの解決」です"]
[null,"ほんの少しの書き間違いで動作しなくなるため、私もどれだけ悩んだことか…"]
[]
[null,"だからこそ、"]
[null,null,"・どんなエラーでも解決できる裏技"]
[null,null,"・初心者でも自在にマクロを組む方法"]
[]
[]
[null,"この二つをAIで実現できれば、最高効率で全自動化を達成することができるんです！"]
[]
[]
[null,"⑩-1　注意点"]
[]
[null,"ここ最近、特に著しい進化を続けるAI。これを理解して使えれば最強のパートナーになります"]
[]
[null,"ただし、次のポイントにはご注意を"]
[]
[null,"AIは100％正確な答えをくれるわけではない"]
[]
[]
[null,"「なんだそれ。じゃあどうやって使うんだよ」"]
[null,"「初心者でもマクロ作れるって言ったじゃん」"]
[]
[null,"と思ったそこのあなた！"]
[null,"その問題を解決するために、このファイルを作っているので安心してください"]
[]
[null,"まず前提ですが、AIがいくら超高性能回答マシーンだとしても、成長途中であることを理解しましょう"]
[null,"イメージは「めっちゃ早く成長する超優秀な新人」という感じですかね。決して全知全能の神ではないんです"]
[]
[null,"例えば、あなたが新人に何か仕事をお願いする時、「あれやっといて」と少ない単語で投げやりに伝えますか？"]
[null,"伝えませんよね？そんな言い方をしても求めてる結果なんて出ないのはわかりきってます"]
[]
[null,"デキる先輩や上司であれば、きっとこういう伝え方をするでしょう"]
[]
[null,"「この仕事は、まず○○を○○します。次に○○を○○すると、○○になります」"]
[null,"「明日までに完成させようと思ってるから、○○さんにやってほしい部分はここです」"]
[null,"「この仕事で気を付けるポイントは○○です」"]
[]
[null,"相手が新人なら丁寧に説明して当然だと思いませんか？"]
[]
[null,"AIに与える指示は、これくらい丁寧に情報を与える（説明する）ものだと思ってください"]
[]
[]
[null,"この丁寧さを推奨する理由は「AIの構造」です"]
[null,"AIは膨大なデータを学習し、そのデータの中から最適と思われる内容を組み合わせて回答しています"]
[]
[null,"※以下、ChatGPTに学習しているデータ量を質問した結果"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このように、膨大なデータの中から選択して回答しているため、回答の選択肢も膨大になります"]
[null,"（今後のAIの進化で変わる可能性はある。あくまでも2024年現在での話）"]
[]
[null,"だからこそ、こちらが何を求めているのかを丁寧に説明しないと、最適な回答が返ってこないのです"]
[]
[null,"質問者の意図を完全には汲み取れない（AI側の問題）"]
[null,"AIが完全に意図を汲み取れる質問ができない（人間側の問題）"]
[]
[null,"まずは、この二つの問題をしっかり理解してください"]
[null,"それを踏まえて、できるだけ少ない質問数で望む回答を得る方法をしっかり伝授します！"]
[]
[null,"具体的な方法の詳細は長くなるため、いまはとりあえず"]
[]
[null,"①意図した回答がもらえるような質問文を考える"]
[null,"②最低限自分でマクロを組めるくらい知識をつけて、提供された情報から必要部分を選別して使う"]
[null,"③エラーをAIに修正してもらう"]
[null,"※最低限自分でマクロを組める＝このファイルで紹介している内容を理解し、実際に機能するマクロを作成できる"]
[]
[null,"この3つの重要ポイントを頭に入れておきましょう"]
[]
[null,"①と③に関してはある程度ノウハウをお伝えできますが、②だけは自分で力をつけるしかありません"]
[null,"このファイルで学んだ知識はそのための布石です"]
[]
[null,"AIはとても便利ですが、頼りきっても良いことはありません"]
[null,"あくまでもベースは自分の力。サポートとしてAIを使う意識でいてください"]
[]
[]
[]
[null,"⑩-2　AIを使う時のコツ"]
[]
[null,"私が実際にAIを使ってコードを作成してきたなかで、特に大事だと思うコツを紹介します"]
[]
[null,"①「エクセルで実現できることはVBAで実現できる」ということを知る"]
[null,"②何をしたいのか具体的にイメージする"]
[null,"③理解できている部分と理解できていない部分を明確に"]
[null,"④質問を何回か繰り返してみる"]
[null,"⑤AIで100％作成するのではなく「不明点のヒント」と「エラー解決」だけにする"]
[]
[]
[null,"①「エクセルで実現できることはVBAで実現できる」ということを知る"]
[]
[null,null,"VBAとはそもそも操作を自動化するための機能です"]
[null,null,"エクセル本体に備わっている機能が使えないわけがありません"]
[]
[null,null,"手動でできることは全部VBAで実現できると思ってください"]
[]
[null,null,"というより、「シート上に設定する関数」ではできないこともVBAなら実現可能です"]
[null,null,"それくらい万能なので夢が広がりますよね"]
[]
[]
[null,"②何をしたいのか具体的にイメージする"]
[]
[null,null,"VBAコードは「書いた順番で内容を自動的に実行する」ためのものです"]
[null,null,"つまり、自分のイメージがコードに直結します"]
[]
[null,null,"論理的に手順を説明できなければコードはエラーになるでしょう"]
[]
[null,null,"何を・いつ・どのようにやるか"]
[null,null,"「手動でやるならどうするか」を具体的に説明できるようイメージしましょう"]
[]
[null,null,"このあと紹介する内容にも関わってくる、大事な要素です！"]
[]
[]
[null,"③理解できている部分と理解できていない部分を明確に"]
[]
[null,null,"AIを使ってコードを作成すると、どうしても自分にはない知識で作成することになります"]
[null,null,"提示されたコードを使って仮にうまく動作したとしても、それは一時的なもの"]
[]
[null,null,"修正が必要になったら「理解できていないコード」は手の施しようがありません"]
[]
[null,null,"もし知らないコードを使ってうまく動作したら、不明点を自分で調べてみましょう"]
[null,null,"そのためにも「自分が何を理解できているのか」を把握するのは重要です"]
[]
[]
[null,"④質問を何回か繰り返してみる"]
[]
[null,null,"先ほど紹介した通り、AIの回答は正確性を保証できません"]
[null,null,"そもそも質問が悪いと全然違う内容が返ってくることもあります"]
[]
[null,null,"・同じ質問を何回か繰り返す"]
[null,null,"・違う言葉を使って質問してみる"]
[]
[null,null,"相手は完全無欠の神様ではなく、丁寧に指示をしないといけない新人さんです！"]
[]
[]
[null,"⑤AIで100％作成するのではなく「不明点のヒント」と「エラー解決」だけにする"]
[]
[null,null,"例：大枠は自分で作成して、ホントにわからない部分だけAIを頼る"]
[]
[null,null,"繰り返しになりますが、自在にマクロを作成するために最も大事なのは「自分の知識」です"]
[null,null,"AIを使って全部作成しても良いのですが、自分に足りない部分を補うために使うという意識でいるほうが健全でしょう"]
[null,null,"補う目的で使っているうちに自分の知識が増えていき、AIに頼る回数が減っていきます"]
[]
[null,null,"VBAはあくまでも自分のスキル。自分の財産だということを忘れないでくださいね！"]
[]
[]
[]
[null,"⑩-3　マクロ作成に活用できるAIたち"]
[]
[null,"では、具体的にどのAIを使えば良いか？ですが、私はChatGPTの有料版をよく使っています"]
[null,"マクロ作成以外でも使っているため有料版なのですが、実は無料版でも十分"]
[null,"ChatGPTを使う理由は「エクセルの関数やマクロコードの作成に非常に適しているから」です"]
[]
[null,"主な特徴としては、"]
[null,null,"①無料で利用可能（基本機能）"]
[null,null,"②自然言語で質問や要件を伝えられる"]
[null,null,"③複雑な関数やVBAコードも作成可能"]
[null,null,"④GPT-4oも回数制限はあるものの利用可能",null,null,null,null,null,"が挙げられます"]
[]
[]
[null,"使用方法はいたってシンプルで"]
[null,null,"①ChatGPTに具体的な要件を伝える"]
[null,null,"②生成されたコードをエクセルにコピペ"]
[null,null,"③必要に応じて修正や調整を行う",null,null,null,null,null,"という感じですね"]
[]
[]
[null,"ただし、先にもお伝えした通り、AIは完璧な答えをくれるわけではありません"]
[]
[null,"・指示するための文章（プロンプト）で細かく要件を伝えられているか"]
[null,"・生成された回答を、自分がしっかり理解できるか"]
[]
[null,"この辺が「機能するマクロの作成速度」に関係してくるのですが…"]
[null,"「AIを使い慣れているか」「VBAコード作成の基礎知識があるか」によって大きく変わります"]
[]
[null,"また、出力されるコードの質が、使用するAIによって若干違います"]
[null,"このあと多数のAIを紹介しますが、いろいろ使ってみて自分に合っているものを探してください！"]
[]
[null,"「選択肢が多くて困る！」という方は"]
[null,null,"・基本的な関数の説明や使い方を教えてくれる"]
[null,null,"・目的にあった関数を提案してくれる"]
[null,null,"・簡単なVBAコードを作成できる"]
[null,null,"・データ分析やグラフ作成のアドバイスがもらえる"]
[null,null,"・24時間365日無料で使用できる"]
[null,null,"・約2000文字ほど入力可能で、ほとんどのエクセル関連の質問に対応できる"]
[]
[null,null,"という理由で、とりあえずChatGPTの無料版を使えば問題ないでしょう"]
[]
[]
[null,"※注意点※"]
[null,"・個人情報や機密情報は入力しないほうがいい"]
[null,"・専門性の高い内容やリアルタイムの情報については確認が必要になる"]
[null,"（ChatGPTは検索型AIではないため、最新の情報を収集することはできない）"]
[]
[]
[null,"以下、無料で使えるAIの一覧"]

{"sheet":"⑪具体例","index":14,"n_rows":530,"n_cols":18,"rows_kept":530,"cut":false,"hidden":false,"merged":[]}
[]
[null,"⑪　AIを使ったマクロ作成方法　具体例"]
[]
[null,"⑪-1　AIを使ってコードを作成する手順"]
[]
[null,"ではいよいよ本題"]
[null,"ここから実際にAIをどう使うのかを解説していきますね"]
[]
[null,"ここで紹介するのは「私が実際にやっている方法」で、経験上、最速で最適なコードを出力してくれる方法です"]
[null,"この方法をふまえ、自分なりに改善していってください！"]
[]
[]
[null,"今回は以下の内容でテスト作成します"]
[null,"①使うAIはChatGPT（有料版で説明しますが無料版でOK）"]
[null,"②使うシートは一つ右のタブの「AIテスト」"]
[null,"③シートのB2~G10セルに1～50の数字をランダム生成するというコードを作成する"]
[null,"④末尾に「5」と「0」がつく数字のセルを黄色背景にする"]
[]
[]
[]
[null,"①メモ帳を開いてプロンプトを作成"]
[]
[null,"まずはパソコンに備わっているアプリのメモ帳を開きましょう"]
[null,"直接AIの入力画面で入力してもいいのですが、"]
[]
[null,null,"①改行したいのに誤って送信してしまう"]
[null,null,"②プロンプトを随時修正できない"]
[]
[null,"という理由から、メモ帳に書いたほうが後が楽なのでおススメです"]
[]
[null,"書き方としては↓"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"基本はこの書き方を真似してくれればOKです！"]
[]
[null,"ポイントとしては、"]
[null,null,"・「最も簡潔に作成」という指示を与えることでコードがスリムになる"]
[null,null,"・手順を具体的かつ詳細に書くことでAIが理解しやすくなる",null,null,null,null,null,null,null,null,"の二つですね"]
[]
[null,"コード作成時は可能な限りスリムなコードを作成することを意識しましょう"]
[null,"修正が必要になった時に理解しやすくなります！"]
[]
[null,"↓の内容をコピーしてメモ帳に貼付けてもOK"]
[]
[]
[]
[]
[]
[]
[]
[null,"②AIに指示（プロンプト）を投入して回答を待つ"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"送信ボタンを押すと、以下のように出力されます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,"作成したコードの詳細を教えてくれるため、意味がわかりやすくなっています"]
[]
[null,"コードブロック右上にある「コードをコピーする」を押してコピーしましょう！"]
[]
[]
[]
[null,"③VBEを開いて貼付け→修正"]
[]
[null,"エクセル画面を開き、Alt+F11でVBEを開きます"]
[]
[null,"「③AIテスト」という部分をダブルクリックで選択し、右側の枠内（最初は空白）にコピーしたコードを貼付けましょう"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"次はコードを修正します"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,"↑これを…"]
[null,null,null,null,null,null,"↓このように修正します。詳細を書いておきます↓"]
[]
[null,null,null,null,null,null,null,null,"Sub AIテスト()",null,"←名前を「AIテスト」に変更"]
[]
[null,null,null,null,null,null,null,null,"    Dim ws As Worksheet"]
[null,null,null,null,null,null,null,null,"    Dim rng As Range"]
[null,null,null,null,null,null,null,null,"    Dim cell As Range"]
[null,null,null,null,null,null,null,null,"    Dim num As Integer"]
[null,null,null,null,null,null,null,null,"    "]
[null,null,null,null,null,null,null,null,"    Set ws = ThisWorkbook.Sheets(\"⑫AIテスト\")",null,null,null,null,null,null,"←シート名を「⑫AIテスト」に変更"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"（手入力だと識別しない可能性あり。シート名をコピペするほうがいい）"]
[null,null,null,null,null,null,null,null,"    ws.Range(\"A1:Z100\").Delete",null,null,null,"←シートのA1からZ100までをセル消去するコード追加"]
[null,null,null,null,null,null,null,null,null,null,null,null,"（必要ではないけど、繰り返しトライを考慮して念のため追加。なくてもOK）"]
[null,null,null,null,null,null,null,null,"    Set rng = ws.Range(\"B2:G10\")"]
[]
[null,null,null,null,null,null,null,null,"    ' B2:G10セルに1～50のランダムな数字を挿入"]
[null,null,null,null,null,null,null,null,"    For Each cell In rng",null,null,"←ここから先の処理内容は空白行があったほうが見やすいため、空白行を追加"]
[null,"右側→にあるコードはコピペして使えます",null,null,null,null,null,null,"    "]
[null,"手入力が不安ならコピペでもOK！",null,null,null,null,null,null,"        num = Int((50 - 1 + 1) * Rnd + 1)"]
[null,null,null,null,null,null,null,null,"        "]
[null,null,null,null,null,null,null,null,"        cell.Value = num"]
[null,null,null,null,null,null,null,null,"        "]
[null,null,null,null,null,null,null,null,"        ' 末尾が5または0の場合、黄色にする"]
[null,null,null,null,null,null,null,null,"        If num Mod 10 = 5 Or num Mod 10 = 0 Then"]
[null,null,null,null,null,null,null,null,"        "]
[null,null,null,null,null,null,null,null,"            cell.Interior.Color = vbYellow"]
[null,null,null,null,null,null,null,null,"            "]
[null,null,null,null,null,null,null,null,"        End If"]
[null,null,null,null,null,null,null,null,"        "]
[null,null,null,null,null,null,null,null,"    Next cell"]
[null,null,null,null,null,null,null,null,"    "]
[null,null,null,null,null,null,null,null,"    ws.Activate",null,"←指定シートをアクティブにするコードを追加"]
[null,null,null,null,null,null,null,null,null,null,"（なくてもいい。このファイルを編集する時に便利だから追加しましたｗ）"]
[null,null,null,null,null,null,null,null,"End Sub"]
[]
[null,"※ちなみに…"]
[]
[null,"「正」",null,null,null,null,null,null,"「誤」","↓こちらのコードだとエラーになります"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"赤枠内の順番が違うのですが、記述する順番を間違えただけでエラーになっちゃいます"]
[]
[null,"この場合、エラーの理由は"]
[null,null,"範囲の削除操作（ws.Range(\"A1:Z100\").Delete）が事前に行われているため、参照しようとしたrngが無効になっている",null,null,null,null,null,null,null,null,null,null,null,null,null,null,"ですね"]
[]
[null,"気になる方は順番を変えて起動してみてください"]
[null,"（この説明で作ったマクロは「AIテストコード控え」という場所に残しておきます）"]
[]
[]
[]
[null,"④実際にマクロを起動してみる"]
[]
[null,"マクロを使う場合、"]
[null,null,"・VBEコード内でF5を押す"]
[null,null,"・開発タブ→挿入→コントロールボタン設置"]
[null,null,"・アクションをトリガーに自動起動するよう設定する"]
[null,null,null,null,null,null,null,"といった方法があります"]
[]
[null,"今回は手っ取り早く「マクロが機能するか」を試したいため、最初の「VBEコード内でF5を押す」で説明します！"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,"sub~end subの間（プロシージャ内）にカーソルがある状態にする"]
[null,null,null,null,null,null,null,null,"↓"]
[null,null,null,null,null,null,null,null,"F5キーを押す"]
[]
[]
[]
[]
[]
[]
[null,"問題がなければ、最後に書かれている「ws.Activate」のおかげで処理が完了したページが自動で表示されます"]
[]
[]
[null,null,null,null,null,null,null,null,null,null,"最初に提示した要件である"]
[null,null,null,null,null,null,null,null,null,null,"シートのB2~G10セルに1～50の数字をランダム生成する"]
[null,null,null,null,null,null,null,null,null,null,"末尾に「5」と「0」がつく数字のセルを黄色背景にする"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"のふたつが満たされていますね"]
[]
[]
[null,null,null,null,null,null,null,null,null,null,"VBE画面でF5を押すたびに数字（処理結果）が変わるため、何度か試してみてください"]
[null,null,null,null,null,null,null,null,null,null,"マクロの力を実感できるはずです"]
[]
[]
[]
[null,"まとめ"]
[null,"①メモ帳を使って指示文（プロンプト）を作成"]
[null,"②AIに投入して待機→回答をコピー"]
[null,"③Alt+F11でVBEを開く→貼り付ける"]
[null,"④出力された内容に応じて修正する"]
[null,"⑤F5を押してマクロを起動する"]
[]
[]
[]
[null,"⑪-2　エラーを解決するためのAIの使い方"]
[]
[null,"ここ、めっちゃ重要で大事でimportantです！！"]
[null,"コード作成時の一番の難関が「エラーの解決」なんですよね…"]
[]
[null,"本来エラーの解決をするためには膨大なVBAの知識が必要になります"]
[null,"単語一つ一つの意味を完璧に把握し、構文の意図を完全に理解し、書き方に熟知していないと解決できないんです"]
[]
[null,"これをAIなしの独学で解決方法を極めようとしたら…数年かかるんじゃないですかね。マジで"]
[null,"それか、極めるまえに辛くてやめるパターンです"]
[]
[null,"だからこそ、このエラー解決ができる「AI」が登場したことで革命が起きています"]
[null,"どんな初心者でもエラーを解決できて、自在にマクロを組めるってヤバイと思いますよ"]
[]
[]
[null,"では、エラーを解決する具体的な方法をお伝えします"]
[]
[null,"さきほど説明で使用したコードをわざとエラーにして説明します"]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,"ここをエラーにしました"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このコードを実行すると、以下の表示が出ます"]
[]
[]
[null,null,null,null,null,null,null,null,null,"オブジェクトが必要…"]
[null,null,null,null,null,null,null,null,null,"「どゆこと？」ってなりません？"]
[]
[]
[]
[]
[null,null,null,null,null,"↑デバッグを選択すると、どの記述が問題なのか判明します"]
[]
[]
[null,"デバッグを選択すると、エラーの原因部分が黄色に着色されます"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,"ここがエラーだと判明しました"]
[null,null,null,null,null,null,null,null,null,"オブジェクトが必要っぽいです"]
[]
[null,null,null,null,null,null,null,null,null,"さて、どうします？"]
[]
[null,null,null,null,null,null,null,null,null,"「原因がわかったところで対応策がわからない」"]
[null,null,null,null,null,null,null,null,null,"初心者ならなおさらですよね？"]
[]
[null,null,null,null,null,null,null,null,null,"これが「マクロを学ぶ人の90％が挫折する理由」なんです"]
[]
[]
[]
[]
[]
[null,"ここで登場するのがAI様！"]
[]
[null,"以下のプロンプトを使用することで問題を探ってもらいます"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,"このプロンプトの回答がこちら"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,"この間に、コードブロックにて修正後のコードが生成されている"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"このように、コードの修正もできるのがAIの強みですね"]
[null,"ただし、注意点があります"]
[]
[null,"回答をもらっても「修正方法が違う」とか「修正できていない」ことがあるんです"]
[null,"これはシンプルに私の聞き方の問題かもしれませんし、作成よりも修正の難易度が高いせいなのかもしれません"]
[]
[null,"自分で調べて「このプロンプトのほうが良いじゃん」というのがあれば、そちらをお使いください"]
[]
[null,"どちらにせよ、知識がない状態でエラーの解決は難しいため、修正点の参考になる案が出るだけでもかなり助かります"]
[null,"本来は自分で調査して悩んで解決しないといけないけど、近道を提示してくれる感じですからね"]
[]
[]
[null,"そしてもうひとつ、エラー解決にあたって意識してほしいことがあります"]
[null,"それがエラーの原因をしっかり理解することです"]
[]
[null,"AIを使えば確かにマクロ作成もエラー解決もできますが、"]
[]
[null,null,"・なんでそのコードで機能するのか"]
[null,null,"・もっと簡潔にコードを作成できないか"]
[null,null,"・なんでエラーになるのか"]
[null,null,"・どうやってエラーを解決するのか"]
[]
[null,"このへんが自分の力にならないと、いつか必ず挫折します"]
[]
[null,"だからこそエラーの原因を理解していないのは大問題です"]
[null,"機能するマクロを作成できたら、エラーの原因もAIに聞いて自分の力にしましょう！"]
[]
[null,"聞き方は「エラーの原因を詳細に教えて」で回答してくれます"]
[]
[null,"便利ツールは多いに活用したいですが、あくまでも「自分の知識が財産」だということを忘れないように！！"]
[]
[]
[]
[null,"⑪-3　AIからより正確な回答を得るための質問方法について"]
[]
[null,"何回もお伝えしましたが、質問文が詳細であればあるほど精度の高い回答が得られます"]
[]
[null,"例えば「セルにランダムで数字を表示するコードを作成して」と書くよりも"]
[null,"「シートのB2~G10セルに1～50の数字をランダム生成するコードを作成して」と書くほうが望む結果になりやすいですね"]
[]
[null,"このように、動作を詳細に伝えてあげることでAIが何を作成してほしいのか理解しやすくなります"]
[null,"最適な質問をするために最も大事なのは「自分が手動で行うならどういう動作になるのか」を言語化することでしょう"]
[]
[null,"必ずしも一文で表現する必要はありません"]
[null,"「⑪-1　AIを使ってコードを作成する手順」で説明したように、"]
[]
[]
[]
[]
[]
[]
[]
[null,"①②③と手順を明確にしてあげるだけで希望するコードを作成してくれる確率が上がりますし、修正もしやすくなります"]
[]
[]
[null,"もっと具体的に言うと、このような表で「金額ごとに自動で料理名を振り分けたい」場合"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"プロンプトの書き方としては以下のようになります（あくまでも私の場合ですが）"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"私が普通にマクロを作れるためこのような書き方になるという部分もありますが…"]
[null,"基本的には「手順を詳細に言語化する」ことができれば問題ありません"]
[]
[null,"上のプロンプトで作成してもらったのが↓です"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"で、マクロを実行したのが↓ですね"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"関数でこの処理を作るのはけっこう大変ですよね"]
[]
[null,"①複数の関数を組み合わせて実現しようと何時間も頭を抱える"]
[null,"②AI使ってマクロ作って10分かからず完成させる"]
[null,"あなたはどっちのほうが良いですか？"]
[]
[]
[null,"※ちなみに…"]
[null,null,"AIに質問する際の最適な質問方法は？と質問した時の回答が以下"]
[null,null,"1. 明確な質問: 質問が曖昧であると、AIが回答を返すことができない場合があります。"]
[null,null,"2. 簡潔な質問: 冗長な質問は、AIが回答を返すことができない場合があります。"]
[null,null,"3. 正確な情報: 誤った情報を含む質問は、AIが回答を返すことができない場合があります。"]
[null,null,"4. 適切な言語: AIが理解できない言語で質問をすると、AIが回答を返すことができない場合があります。"]
[null,null,"5. 適切な形式: AIが理解できない形式で質問をすると、AIが回答を返すことができない場合があります。"]
[]
[null,"まずは自分で実際にいろいろ体験してみて、どんな質問だとどんな返答になるのかを理解してください"]
[null,"今回は私のやり方をお伝えしましたが、AIは凄まじい速度で進化しているため、もっと良いプロンプトもあるでしょう"]
[null,"大事なのは「目的を達成するために、自分がいかに楽できるかを考えること」です！"]
[]
[]
[]
[null,"⑩-7　まとめ"]
[]
[null,"以下、リンクになっています。押すと翼を授けます。某レッドブルのごとく"]
[]
[null,"⑩-1　注意点　"]
[null,"⑩-2　AIを使う時のコツ　"]
[null,"⑩-3　マクロ作成に活用できるAIたち　"]
[null,"⑪-1　AIを使ってコードを作成する手順　"]
[null,"⑪-2　エラーを解決するためのAIの使い方　"]
[null,"⑪-3　AIからより正確な回答を得るための質問方法について　"]
[]
[null,"ぜひ定期的に読み返してください！"]
[null,"各ポイントをしっかり理解していると、AIでのマクロ作成がかなり効率よくできるようになります"]
[]
[null,"好きなマクロを作成できるようになると、定時退社なんて当たり前になります"]
[null,"出社後1時間で仕事が終わる今では、残業するほど仕事を探すのが大変ですｗ"]
[]
[null,"仕事が楽しくなるのも"]
[null,"仕事がヒマになるのも"]
[null,"毎日定時退社も"]
[null,"家族との楽しい時間も"]
[null,"趣味を満喫できる時間も"]
[]
[null,"マクロを学んで「夢物語」から「現実」に変えてやりましょう！"]
[]
[null,"それでは、楽しいVBAライフを！！"]

{"sheet":"⑫AIテスト","index":15,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[]}