最終更新日:2020-02-24本サイトについてエクセル(Excel)およびマクロVBA全般について、入門解説から上級者に役立つ技術情報まで幅広く発信しています。「Excel全般」は、エクセルの操作と関数を基礎から応用まで。「マクロVBA入門編」は、入門・基礎として、VBA未経験者でも理解できるように詳しく説明しています。「マクロVBA応用編」は、VBA経験者(中級・上級)向けの技術解説およびVBAサンプルを豊富に揃えています。※本サイトはリンクフリーです、ご自由にどうぞ。サイト全体の更新情報・お知らせ2020/01/23ロリポップサーバーをハイスピードプランに変更しました。ページの表示速度は以前より早くなっています。2019/11/23新シリーズ「SQL入門」を開始しました。DBは扱いやすいようにSQLiteを採用しています。SQL初心者向けに基礎から解説します。2019/6/25PC版の上部メニューをドロップダウン形式にしました。マクロVBAのメニュー構成も若干変更しています。VBAコードのコピーボタンを設置しました。2019/5/31サイトの文字コードをUTF-8に変更しました。この際に使ったVBAコードも掲載しています。Shift_JISのテキストファイルをUTF-8に一括変換2019/2/22サイト全体をリニューアルしました。横幅を広げ、文字も少し大きくしました。2018/3/05サイト全体をHTTPS化(常時SSL)しました。HTTP/2プロトコルにより、レスポンス速度が向上しています。ブックマークしている場合は、HTTPSへ変更してください。VBAエキスパート対策」を開始しました。VBAエキスパートの、ベーシック、スタンダード合格に必要なVBAの解説です。「2020年小学校プログラミング必修化」、大人はVBAから始めてみましょう。2017/12/1最も閲覧されているのが、「マクロVBA入門」です。最初に書き始めてから7年近く経過しています。第1回から順次見直し誤字脱字の修正をしつつ、必要に応じ説明文を追加しています。2017/11/26久しぶりの大型記事を書き始めました。オセロを作りながらマクロVBAを学ぼうオセロ作りを通して、思考整理しVBAプログラミングの学習が目的です。Scriptの神髄にまで迫りたいと思います。2016/09/01各ページの本文右上に、最終更新日を追加しました。元ファイルの更新日ですので、公開日とは若干違う場合があります。誤字脱字だけの修正をしている場合もあります。理屈は最低限に、とにかくマクロVBAが書けるようになることが目的です。2015/03/09スマホ対応サイトへリニューアルしました。いわゆるレスポンシブCSSを使ったものとなっています。これにともない、イメージも一新しました。2014/11/191年ほど前にフォルダ構成を変更し、2ヶ月前に旧ファイルを削除しました。サイト内のリンクが消えても、Googleクロールエラーが無くなりません。そこで、旧URLは301リダイレクトを設定しました。2014/11/01各ページのレイアウトを少し変更しました。行間を広くしたので読みやすくなったと思います。※サイトのタイトルを「エクセルの神髄」としました。「神髄」は本質、奥義の意味です。基本の積み重ねこそが奥義です。2014/10/25サイト構成をエクセル中心に変更しました。従来のトップページは、★旧トップページ★よりお入りください。2013/09/05都合により、フォルダ構成を変更しました。旧URLは、しばらく残しますが、いずれ削除予定です。ブックマーク等をしている場合は変更をお願いいたします。2012/02/28独自ドメイン取得しました。エクセル色を強めました。2012/01/19全体的にリニューアルしました。使い易くなっていれば良いのですが。見るツイッターのお題「君の名は?」|エクセル雑感(2月24日)ツイッターで出題されたVBAの問題をやってみました。ツイッターのエクセルおよびVBA関係の人達の間で問題を出し合うという事が行われています。今回のお題は以下になります。"-"ちゃんの名前がわかりません!教えてください。セルの数式をネスト色分けしてコメント表示|VBAサンプル集(2月24日)数式のネストが3段階を超えてくる、なかなか読むのが辛くなってきます。数式を改行したりして見やすくするにも限界があります。特別に複雑な数式を解析する場合は、以下を試してみてください。2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。スピルを上手に使うと、今まで多くの作業列を使う必要があったり、とても難しい配列数式にしなければならなかったものが、かなり簡略化された数式で実現することができます。簡易音楽プレーヤーの作成|ユーザーフォーム入門(2月22日)VBAにも音楽を!ということでVBAで音楽再生するVBAクラスを作成しました。そこで、このクラスを使い簡易的な音楽プレーヤーを作ってみました。本格的なものは作れませんし、良いソフトが沢山ありますので自作しても仕方ありません。VBAで音楽再生するクラスを作成|VBA技術解説(2月22日)VBAにも音楽を!ということでVBAで音楽再生をしてみることにしました。VBAでの音楽再生方法はいろいろありそうですが、多くの環境で動くのではないかという事でAPIを使いました。このAPIで音楽再生します。セル結合なんて絶対に許さないんだからね|VBAサンプル集(2月17日)セル結合の弊害はネットに溢れているのでここで改めて説明の必要はないでしょう。いえ、ついついセル結合してしまう事ありますよね、人間だからね。VBAで適切に処理すればセル結合もきちんと処理は可能です。セル結合/解除でセル値を退避/回復|VBAサンプル集(2月16日)セル結合の弊害はネットに溢れているのでここで改めて説明の必要はないでしょう。いえ、セル結合したい場合もありますよね、人間だからね。VBAで適切に処理すればセル結合もきちんと処理は可能です。セル結合した時にどうしようもないのが、各セル値が失われてしまうことです。FILTER関数(範囲をフィルター処理)|エクセル入門(2月11日)FILTER関数は、定義した条件に基づいてデータ範囲をフィルター処理した結果を返します。FILTER関数はスピル専用の関数となります。最後の方では、表示する列を選択する方法も掲載しています。「VBAで導関数を求めよ」ツイッターのお題をやってみた|エクセル雑感(2月9日)ツイッターで出題されたVBAの問題をやってみました。ツイッターのエクセルおよびVBA関係の人達の間で問題を出し合うという事が行われています。そんな中、現役高校生と思われる方からVBAの問題が出されました。ステートメント|VBA入門(2月9日)VBAでは、カスタムプロパティの作成と操作ができます。クラスモジュール、フォーム、標準モジュール、これらにカスタムプロパティを作成することができます。プロパティを作成するには、Property{Get|Let|Set}ステートメントを使用します。フィボナッチ数列(再帰呼び出し)|VBA技術解説(2月8日)フィボナッチ数列は、最初の二項は0,1で、以後は直前の2つの項の和となっている数列です。VBAでフィボナッチ数列を出力してみましょう。フィボナッチ数を勉強しようとか、何かに使おうという事ではありません。エクセルで連立方程式を解く(MINVERSE,MMULT)|エクセル雑感(2月7日)とつぜん連立方程式を解くことになりました。これらを自身の覚え書きの意味も含めて記事にしておきます。行列の難しい説明は抜かして、どうやって解決したかの経緯の説明が中心になります。スピルって速いの?スピルの速度について|VBA技術解説(2月4日)Office365を導入する企業や個人で契約する人もかなり増えてきているようです。自然とスピルや新関数を使う事も増えてくるでしょう。組み合わせて入れなければならず、これを難しく感じていた人も多いでしょう。スピルでVBAの何が変わったか|VBA技術解説(2月3日)Office365にスピルが登場し、2020年1月にはXLOOKUPもリリリースされ、ますますエクセルが便利になってきています。スピルは、これまでにないくらい大幅な機能変更と言えるでしょう。スピルの一般的な説明については以下を参照してください。スピルについて|エクセル入門(2月3日)2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。スピルとは何か、その概要について説明します。以下で、「従来」または「旧」と呼んでいるのはスピルしないエクセルを指しています。エクセルで「もういくつ寝るとお正月」|エクセル雑感(1月29日)今日は2020年1月31日です。早いもので1月が終わろうとしています。2020年も12分の1がすでに終わろうとしています。この調子では、あっという間に今年(2020年)も終わってしまいそうです。VBAの少数以下の演算誤差について|VBA技術解説(1月29日)ワークシートで時間計算をしていると、時に不可解な結果に見舞われることがあります。エクセルの時間は、1日を1とした数値で管理されているため、1時間は1の24分の1の数値になります。この少数以下の計算において、エクセルが正しく計算できないというものです。VBAで写真の撮影日時や音楽動画の長さを取得する|VBA技術解説(1月23日)写真の撮影日時、音楽や動画の再生時間、これらをVBAで取得します。写真や音楽、動画をフォルダにまとめて入れている人は多いのではないでしょうか。管理できていなかったりしませんか。ツイッターで出されたVBAのお題をやってみた|エクセル雑感(1月13日)ツイッターで出題されたVBAの問題をやってみました。ツイッターのエクセルおよびVBA関係の人達の間では、いろいろと面白く勉強になる問題を出し合うという事が行われています。フォローして参加してみると楽しいと思いますよ。イベントプロシージャーの共通化(Enter,Exit)|ユーザーフォーム入門(1月13日)ユーザーフォームのVBAでは、同じイベントプロシージャーを何個も作成することが多々あります。テキストボックスを複数個配置して同じイベント処理を実装する時、全く同じイベントプロシージャーをコピペで何個も作るといったことが必要になります。エクセルは表計算ソフトです、つまり縦横の表を扱います、データは横に項目があり、縦に項目に対するデータが入っている事が一般的です。そのデータ行数は決まった行数ではない事が普通です。2.RangeとCellsの使い方|VBA入門VBAではセルを指定する方法としてRangeとCellsがあります、RangeもCellsも、どちらもRangeオブジェクトでセルを指定するものです。どちらを使ったらよいのでしょうか、どう使い分けたらよいのでしょうか、実際のVBA記述では、RangeとCellsを使い分ける必要があります、RangeとCellsの使い方について解説をします。値の貼り付けと題しましたが、値だけではなく、「形式を選択して貼り付け」のいろいろな指定方法です。セルをコピーして、他のセルに「形式を選択して貼り付け」する場合のマクロVBAコードです。セルの値や書式を別のセルコピーすることはマクロVBAでは定番かつ必須の技術になります。「マクロ」とは、エクセルの操作を自動化するものです。その自動化する機能が、「マクロ」と呼ばれています。マクロの中身は、プログラムです。5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。"A1"や"B5"と言うような文字で指定するのでは何かと不便です、もっと、プログラムっぽい(笑)指定方法があります。6.変数宣言のDimとデータ型|VBA入門マクロVBA入門者が、まず最初につまずくのが、このDimで変数を宣言することでしょう。良く説明されますが、まずはこの考えで良いでしょう。この入れ物には、いろいろなタイプの入れ物があります。Next)|VBA入門VBAのForNextは、同じ処理を繰り返し行うためのVBA構文です。VBAで繰り返し処理をする方法は何通りかありますが、最も頻繁に使われていて、最も簡単便利であり、まず最初に覚えるべき繰り返し処理のVBA構文がForNextになります。前回実行したマクロを、もう少し詳しく見てみましょう。して、これでセルに値がはいるのか、どうやってVBAを読んだらよいのか、少しだけ詳しく解説します。これで、A1セルに、「おはよう!」と入る事がわかりました。空白セルの判定は、VBAにおいては頻繁に発生しますが、正しく空白セルを判定する事は以外と難しいものです。これが、はっきりしない為に何が正しいのかが判然としないことが問題を複雑にしています。以下、A1セルが空白かどうか判定する方法をいくつか紹介します。「ひらがな」を「カタカナ」に、「カタカナ」を「ひらがな」に変換する方法の説明です。これで、「カタカナ」で表示されたと思います。INDEX関数セル範囲から、指定された行と列が交差する位置にあるセルの参照を返します。INDEX関数の書式INDEX(範囲,行番号[,列番号])範囲セル範囲を指定します。セル範囲が1行または1列である場合、行番号または列番号はそれぞれ省略することができます。Sub)|VBA入門それでは、とにかく、マクロVBAを書いてみましょう。入力し、Enterして下さい、このように、subがSubとなり、後ろに()が付きます。下に、EndSubが追加されます。13.マクロはどこに書くの(VBEの起動)|VBA入門さて、ではマクロVBAはどこに書いたらよいのでしょうか。マクロVBAを書くための紙に相当する編集画面を出します。このマクロVBAの編集画面をVisualBasicEditor、略してVBEと呼びます。14.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門ワークブックを閉じる場合や保存する場合のVBAの説明です。閉じる時に保存するか保存しないかを指定できます、また、ブックを保存するにも、上書きなのか別ファイルにするのか等によってVBAの記述がそれぞれ違ってきます。ブックを閉じるには、WorkbookのCloseメソッドを使用します。このように書きくことで1つのセルを指定する場合でした。これらの指定方法を見ていきましょう。複数のセル(矩形のセル範囲、)を指定する場合のVBAの書き方です。16.セル範囲⇔配列(マクロVBA高速化必須テクニック)|VBA入門セル範囲をVariant型変数に入れる事で、配列を作成することができます。配列をセル範囲にまとめて出力する事も出来ます。これは、マクロVBAを高速処理したい時の必須テクニックになります、マクロの処理が遅い場合は、このテクニックが使えないか検討してください。17.まずはマクロVBAを使う準備|VBA入門さっそくマクロを作りましょう。その前に、準備があります、上部のリボンに、「開発」タブを追加します、「開発」タブには、マクロを開発するにあたって必要なアイコンが並んでいます。※画像は、Excel2013になります。数式の参照範囲を可変対応させます、つまり、入力データにより自動で拡張・縮小されるように関数を設定します。エクセルの表には、集計等の計算式を入れますが、その集計範囲は固定になっているため、データの追加時には、計算範囲外になってしまったりするので注意が必要になります。前回は変数を説明しましたが、変数があれば、当然の定数もありConstで宣言します。変数は値が変わるもの、定数は値が変わらないものです。定数とは、数値や文字列の代わりに使用される、意味を持たせた名前のことです。20.ブック・シートの指定|VBA入門ここまでのVBA入門では、アクティブブックのアクティブシートだけを扱ってきました。アクティブブックのアクティブシートとは、一番手前に表示されているブックの選択しているシートで、通常、手作業で操作しているシートの事になります。最低限知っておくべきエクセルの基本操作および関数を、入門基礎から上級者に役立つ実践応用まで紹介しています。★エクセル全般の全コンテンツ一覧★エクセル雑感エクセル入門エクセル基本操作エクセル関数超技エクセル挑戦問題ExcelリファレンスマクロVBA・・・VBAの基礎から実践応用までマクロVBAの初級者には基礎から詳しく解説、VBA上級者には実戦で役に立つ情報をお届けしています。VBAエキスパート対策ExcelマクロVBA入門ExcelマクロVBA再入門Excelマクロの記録で覚えるVBAExcelユーザーフォーム入門ExcelマクロVBA技術解説ExcelマクロVBAサンプル集エクセル顧客管理ExcelマクロVBA関数マクロVBA練習問題ExcelリファレンスSQL入門・・・VBAでDBを扱うSQLの基礎解説VBAは覚えたけど膨大なデータ量に苦戦している・・・そんな場合はぜひデータベースの活用を検討してください。社会的にパソコンで扱うデータ量は近年急激に増えています。動作が重くなってしまい、とても使用に耐えられるものではありません。これを解決する手段として、データは専用のデータベースに入れてVBAで操作する方法があります。エクセルのマクロVBAから外部データベースを扱う方法について解説しています。勉強しつつ、覚えたこと、試したことを含めて記載していく予定です。随所で、Excelとの対比を掲載しています。※現在は公開を停止しています。使った感想などをお寄せくだされば、今後の開発に生かしていきます。試用版の場合は、プロダクトキーの入力だけで有料版へ移行できます。システムは有料ソフトです、試用版を用意してあります。「エクセル顧客管理」は顧客管理です。購入でVBAコードも開示します。「エクセル営業管理」は見積・請求・スケジュール・会計管理です。購入でVBAコードも開示。「たぶん同期」フォルダ同期ソフトはフリーソフトです、ご自由にどうぞ。このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。GASスプレッドシート入門スプレッドシート応用GAS入門GAS応用このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。