ExcelとVBAの入門解説
エクセルの神髄

マクロVBAを初心者向けの基本から上級者向けの高度な内容までサンプルコードを掲載し解説しています
最終更新日:2024-08-30

本サイトについて

エクセル(Excel)およびマクロVBA全般について入門解説から上級者に役立つ技術情報まで幅広く発信しています。
その他として、GAS、Python、SQLといった関連情報も掲載しています。

エクセルやVBAを使った簡単なツールからシステム開発まで対応いたします。
ご依頼は、お問い合わせフォームからお受けしております。
お気軽にご相談ください。

エクセル入門 :必須ショートカットキー、操作、機能、関数を、入門・初級・初心者向け解説
エクセル基本操作 :エクセル基本操作を解説。知ってそうで知らない操作や高度な操作も
エクセル関数応用 :エクセル関数の応用技。サンプルと基本から応用・高等テクニックまで
エクセル練習問題 : 簡単にできそうなのに意外になかなか出来ない問題を揃えていきます
ツイッター出題回答 : ツイッターに出題したエクセルのお題と出題された問題への回答
エクセル雑感 : Eexceの操作や関数、マクロVBAについての一般的な話や雑感です
Excelリファレンス : ショートカットキー一覧、関数一覧、祝日一覧等々

ExcelマクロVBA入門 : VBA入門・基礎として、未経験者でも理解できるように詳しく説明
ExcelマクロVBA再入門 : 書籍やWEBをみて結局挫折してしまった方を対象に実戦形式で
マクロの記録で覚えるVBA : マクロの記録のVBAコードの解読と修正しつつVBAを覚える
MOS VBAエキスパート対策 : VBAエキスパート試験に必要なVBA知識についての対策
マクロVBA練習問題 : マクロVBA入門学習の一環として練習問題を用意
VBA100本ノック : ツイッター連動企画として、VBAの問題を100本掲載しています

ユーザーフォーム入門 : ユーザーフォームの初歩から応用まで
VBAクラス入門 : VBAクラスの使い方やオブジェクト指向について
マクロVBAサンプル集 : なるべくそのまま使えるようにしたVBAサンプル集
マクロVBA技術解説 : 良くある問題や少々難度の高い使い方等に対する技術的解説
エクセル顧客管理 : 顧客管理の作成過程をプログ掲載したものの転載
ExcelマクロVBA関数 : 一般的に良く使われる必須となるVBA関数を解説
Excelリファレンス : VBEショートカット、VBA関数、各種プロパティ・メソッド一覧

Python入門 : 近年非常に人気が高いPython言語をVBA経験者に向けた入門解説です
SQL入門 : エクセルのマクロVBAから外部データベースを扱う方法について解説します
スプレッドシート入門 : 随所でExcelとの対比を掲載しながら説明しています
Google Apps Script入門 :GASでスプレッドシートを扱う事に絞って解説しています

※本サイトはリンクフリーです、ご自由にリンクして頂いて構いません。



サイト全体の更新情報・お知らせ

LAMBDA関数と6つのヘルパー関数の解説を追加しました。
さらに、配列を便利に扱える関数等も多数追加されましたので、これらの関数の解説も追加しています。
LAMBDA以降に追加された関数 , LAMBDA以降の新関数の問題集
数式を入力したセルから結果があふれて隣接したセルにも出力される新機能のスピル。
スピルの基礎から応用までのスピル問題集を追加しました。
新シリーズ!ツイッター連動企画「VBA100本ノック」を開始しました。
ツイッターで1日1本出題し翌日解答VBAを出します。
2021/03/03に最後の100本目を出しました。
新シリーズ「Python入門:プログラミング事始め」を開始しました。
人気のプログラミング言語Pythonを初心者向けに基礎から解説。
ロリポップサーバーをハイスピードプランに変更しました。
ページの表示速度は以前より早くなっています。
新シリーズ「SQL入門」を開始しました。
DBは扱いやすいようにSQLiteを採用しています。
SQL初心者向けに基礎から解説します。
PC版の上部メニューをドロップダウン形式にしました。
マクロVBAのメニュー構成も若干変更しています。
VBAコードのコピーボタンを設置しました。
サイトの文字コードをUTF-8に変更しました。
この際に使ったVBAコードも掲載しています。
Shift_JISのテキストファイルをUTF-8に一括変換
サイト全体をリニューアルしました。
横幅を広げ、文字も少し大きくしました。
サイト全体をHTTPS化(常時SSL)しました。
HTTP/2プロトコルにより、レスポンス速度が向上しています。
ブックマークしている場合は、HTTPSへ変更してください。
新シリーズとして、「MOS VBAエキスパート対策」を開始しました。
MOS VBAエキスパートの、ベーシック、スタンダード合格に必要なVBAの解説です。
「2020年小学校プログラミング必修化」、大人はVBAから始めてみましょう。
最も閲覧されているのが、「マクロVBA入門」です。
最初に書き始めてから7年近く経過しています。
第1回から順次見直し誤字脱字の修正をしつつ、必要に応じ説明文を追加しています。
久しぶりの大型記事を書き始めました。
オセロを作りながらマクロVBAを学ぼう
オセロ作りを通して、思考整理しVBAプログラミングの学習が目的です。
遅ればせながら、Google スプレッドシート の入門編を開始します。
ゆくゆくは、Google Apps Scriptの神髄にまで迫りたいと思います。
各ページの本文右上に、最終更新日を追加しました。
元ファイルの更新日ですので、公開日とは若干違う場合があります。
誤字脱字だけの修正をしている場合もあります。
久しぶりの新企画をスタート、ExcelマクロVBA再入門
理屈は最低限に、とにかくマクロVBAが書けるようになることが目的です。
スマホ対応サイトへリニューアルしました。
いわゆるレスポンシブCSSを使ったものとなっています。
これにともない、イメージも一新しました。
1年ほど前にフォルダ構成を変更し、2ヶ月前に旧ファイルを削除しました。
サイト内のリンクが消えても、Googleクロールエラーが無くなりません。
そこで、旧URLは301リダイレクトを設定しました。
各ページのレイアウトを少し変更しました。
行間を広くしたので読みやすくなったと思います。
※サイトのタイトルを「エクセルの神髄」としました。
「神髄」は本質、奥義の意味です。基本の積み重ねこそが奥義です。
サイト構成をエクセル中心に変更しました。
従来のトップページは、★旧トップページ★よりお入りください。
都合により、フォルダ構成を変更しました。
旧URLは、しばらく残しますが、いずれ削除予定です。
ブックマーク等をしている場合は変更をお願いいたします。
独自ドメイン取得しました。
エクセル色を強めました。
全体的にリニューアルしました。
使い易くなっていれば良いのですが。

エクセル新着記事NEW・・・新着記事一覧をもっと見る

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
TRIMRANGE関数は、範囲または配列の外側の端から空の行や空の列を除外します。列全体や行全体に対する数式では、不必要な(データのない)セルも含めて計算してしまうため、非常に効率が悪く余分な処理時間がかかってしまいます。TRIMRANGE関数を挟んで必要な範囲・配列だけにすることで、計算効率・パフォーマンスが大幅…
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
正規表現("regex")を扱える3つの新関数です。正規表現について REGEXTEST関数:正規表現と一致するかどうかをチェック REGEXREPLACE関数:正規表現に基づいて文字列を別の文字列に置き換える REGEXEXTRACT関数:正規表現に基づいて文字列からテキストを抽出 先読み・後…
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
365のエクセルで最近(昨年くらい)から急に出始めた不可解な謎現象です。一時的な現象もしくは特定(私)のPCだけの現象だと思っていたのですが、時がたつにつれて一般的に発生している現象ということがわかってきました。なにより、最近新しいWindows11のPCを購入しましたが、そのPCでも発生するようになったからです。
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
ブール型(Boolean)は、データ型の一種で真偽値(真理値、True/False)を保存するデータ型です。真(True)と偽(False)の2つの値をだけを保存できるデータ型です。プログラミングにおいてはIfステートメントで真偽判定して処理を分岐しますが、この真偽判定の結果を入れておく変数のデータ型がブール型(B…
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
テキストがある特定の文字列(例えば「未使用」)の場合に、その図形を削除するマクロVBAです。図形を扱うVBAの基本は以下を参照してください。第97回.図形オートシェイプ(Shape)|VBA入門 テキストの内容によって図形を削除する参考VBA1 ShapeのTextFrameのCharactersのTextを取得し…
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
マクロVBA入門シリーズの、コメント抜きの目次だけのページ。第1回.マクロとは?VBAとは?VBAでできること 第2回.まずはマクロVBAを使う準備 第3回.マクロの記録 第4回.マクロはどこに書くの(VBEの起動) 第5回.VBEのオプション設定(OptionExplicit) 第6回.とにかく書いてみよう(Su…
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
多くの人のVBA学習のお手伝いをしてきましたが、共通するVBA学習での躓きポイントはいくつかあります。ここでは多くの人が躓くVBAの10大躓きポイントを解説していきます。10大と言っても特に統計をとった訳ではありませんので経験からの感覚的なものです。
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
テンキーのスクリーンキーボードを作製しました。普通はあまり必要性ないと思いますが…個人的に、あるExcelファイルを使うときに、テンキーがあったらよいなーと思ったので作ってみました。ということで、特定ファイルのみで使う目的で作製したものなので、汎用性のある便利なものということではあのません。
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
365のエクセルで最近(2023年の後半くらい)になって急に出始めたエラーメッセージです。いくつかのプログ等で対策が書かれているのを見かけましたが、これと言った決め手も無さそうに見受けられました。つまり、書かれている方法で解決した人もいれば解決しない人もいるといった状況に見受けられます。
初級脱出10問パック|VBA練習問題(2024-01-24)
マクロVBA練習問題 初級を脱出するためのVBA問題を10問1パックにしました。ページ内目次 問題1:文字列結合 問題2:文字列分割 問題3:消費税計算 問題4:数値合計とMsgBox 問題5:セル範囲のコピー 問題6:セル範囲の値コピー 問題7:別シートからデータ取得 問題8:ファイル一覧 問題9:別ブックのデー…
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
累計を求める数式は書き方がいくつもあります。これが定番、これが最適解の数式…とはなかなか言えません。どれも一長一短なところがあります。ここでは、累計を求める数式の代表的なところを何通りか紹介していきます。
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
エクセルで文字列を置換する関数といえばSUBSTITUTE関数です。しかし、このSUBSTITUTE関数で指定できる「検索文字列」「置換文字列」は1種類だけになります。複数の文字列を検索して置換することはSUBSTITUTE関数では一度には出来ません。
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
365のエクセルで最近になって急に出始めたエラーメッセージです。「いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。」何が原因で出力されるメッセージなのでしょうか… どのような対処をしたら良いのでしょうか… エラーメッセージの詳細 かつて見た覚えのないメッセージです。
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
VBAでデータをクリップボードに送信したり取得したり、そういう要望は結構多くあります。このVBAでクリップボードを扱う方法を3通り紹介します。ただし、データといってもここではあくまで文字列データ(テキストデータ)だけを扱います。
難しい数式とは何か?|エクセル雑感(2023-12-07)
エクセルでは難しい数式は要らない、𝕏ではそんな話を良く目にします。同じことをするのなら、難しいより簡単な方が良い、それは当たり前ですね。では「難しい」とは何を指しているのでしょうか? 普段良く「数字で語る」みたいなことを言いますが、「難しい」の基準もなくそれを計る尺度も存在しない極めて曖昧な話…
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)
タイトルというのはなかなか難しい。当初思ったお題は、・スピらぬなら壊してしまえスピル数式 ・スピらぬならスピらせてみようスピル数式 ・スピらぬならスピルまで待とうスピル数式 もちろん、壊してしまう訳には行かないし、待っていたってスピルする訳ないし… 当然「スピらぬならスピらせてみようスピル数式」と言う事になる。
イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
LAMBDAヘルパー関数のLAMBDA関数の記述部分を縮小記述するものです。明示的にLAMBDA関数を記述する場合に比べてイータ縮小ラムダは記述が短く扱いやすくなっています。もちろん明示的にLAMBDA関数を記述しても構いませんが、イータ縮小ラムダの記述が可能な場合は極力使うようにすることで数式も短く見やすくなりま…
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)
PIVOTBY関数は、行(縦)と列(横)でグループ化し指定された関数によって値を集計します。行(縦)と列(横)の2軸に沿ったグループ化と、関連する値の集計がサポートされます。複数の行グループレベル、複数の列グループレベルに対応しています。
GROUPBY関数(縦軸でグループ化して集計)|エクセル入門(2023-11-18)
GROUPBY関数は、行(縦)でグループ化し指定された関数によって値を集計します。行(縦)の軸に沿ったグループ化と、関連する値の集計がサポートされます。複数の行グループレベルに対応しています。総計・小計、並べ替え、フィルター処理もサポートされています。
PY関数(Pythonコードをセル内で実行)|エクセル入門(2023-11-17)
PY関数は、PythonコードをExcelのセル内で実行できる関数です。「PythoninExcel」と呼ばれたりしています。実際の計算はMicrosoftクラウドで実行され結果がワークシートに返されます。



アクセスランキング・・・ランキング一覧をもっと見る

1.最終行の取得(End,Rows.Count)|VBA入門
Excelワークシートにおける表の最終行の取得は、マクロVBAの必須技術になります、エクセルVBAにおける最終行取得の必要性 エクセルは表計算ソフトです、つまり縦横の表を扱います、データは横に項目があり、縦に項目に対するデータが入っている事が一般的です。しかし、そのデータ行数は決まった行数ではない事が普通です。
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
値の貼り付けと題しましたが、値だけではなく、「形式を選択して貼り付け」のいろいろな指定方法です。セルをコピーして、他のセルに「形式を選択して貼り付け」する場合のマクロVBAコードです。セルの値や書式を別のセルにコピーすることはマクロVBAでは定番かつ必須の技術になります。
3.変数宣言のDimとデータ型|VBA入門
マクロVBA入門者が、まず最初につまずくのが、このDimで変数を宣言することでしょう。変数とは、数値や文字列など(すなわちデータ)を一時的に格納する入れ物 と良く説明されますが、まずはこの考えで良いでしょう。この入れ物には、いろいろなタイプの入れ物があります。
4.繰り返し処理(For Next)|VBA入門
VBAのForNextは、同じ処理を繰り返し行うためのVBA構文です。繰り返し処理はループ処理とも呼ばれます。マクロでのループ処理の記述は何通りかありますが、まず最初に覚えるべきものが、今回説明するForNextです。
5.6.7.セルのクリア(Clear,ClearContents)|VBA入門
セルをクリアするマクロVBAの書き方です、クリアするといっても、セルの何を(値、書式、コメント等々)クリアするかによって、VBAコードが違ってきます。具体的には、セルの何を(値、書式、コメント等々)クリアするかによって使用するメソッドが変わるという事です。
8.メッセージボックス(MsgBox関数)|VBA入門
メッセージを表示するダイアログボックス(小さな画面)を表示するVBAです。ユーザーに選択(「はい」「いいえ」や「OK」「CANCEL」等)してもらうことで、その選択結果を受け取る事も出来ます。マクロVBAでメッセージボックスを表示するにはMsgBox関数を使います。
9.10.条件分岐(Select Case)|VBA入門
前回のElseIf以外に、多肢条件分岐の別の書き方があります。それがSelectCaseになります。むしろElseIfより、このSelectCaseの方が、より多肢条件分岐に適していると言えます。SelectCaseは、多肢条件分岐に特化したステートメントになります。
11.マクロとは?VBAとは?VBAでできること|VBA入門
エクセルのマクロとは何でしょうか? ExcelのVBAとは何でしょうか? マクロで何が出来るのでしょうか? VBAで何が出来るのでしょうか? 「マクロ」とは、エクセルの操作を自動化する機能です。エクセルを自動化する機能が、「マクロ」と呼ばれています。
12.条件分岐(IF)|VBA入門
ある条件の時だけ処理したい、ある条件の時は処理したくない、そのような条件によって処理内容を変更したい場合があります。VBAで条件により処理を分岐させたい場合に使うのが、Ifステートメントです。マクロVBAで自動化する場合の多くは、条件により処理を変えつつ一定回数繰り返すという事です。
13.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。しかし、"A1"や"B5"のような文字で指定するのでは何かと不便です、もっと、プログラムっぽい(笑)指定方法があります。
14.最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)|VBA技術解説
エクセルの表をマクロVBAで扱う時は、データ部分の先頭から最終行までの、開始列から最終列まで処理する事が多いでしょう。開始行や開始列は、ほとんどの場合、見出し行や見出し列の次からになります。単純な話として、1行目に見出しがあれば、2行目から 1列目に見出しがあれば、2列目から では、ここで、最終行や最終列は、
15.とにかく書いてみよう(Sub,End Sub)|VBA入門
それでは、とにかくマクロVBAを書いてみましょう。VBEで実際にマクロを書いてみましょう VBE(VisualBasicEditor)に標準モジュールを追加したら、そこにマクロを書いていきます。sub練習1 と入力し、Enterして下さい、このように、subがSubと先頭が大文字になり、後ろに()が付きます。
16.並べ替え(Sort)|VBA入門
並べ替えは、データ処理の基本中の基本です。乱雑なデータを並べ替えることはデータ処理の第一歩です。マクロVBAで並べ替えを実行するには、シート操作の「並べ替え」の機能を使用することになります。そもそもデータを並べ替えるという事は、そのデータのキーが何かを考えるという事です。
17.セルの書式(表示形式,NumberFormatLocal)|VBA入門
セルは表示形式を指定することで、セルに入っている値は同じ値でも色々な見え方をさせる事が出来ます。セルの値はそのままで、見た目をユーザーに見やすい形にすることが出来ます。同じ数値の、12345でも 12345 12,345 \12,345 等々の違う表示方法を指定する事が出来ます。
18.19.Findメソッド(Find,FindNext,FindPrevious)|VBA入門
Findメソッドは、マクロVBAでセル範囲内の条件に当てはまるセルを検索するものです。Findメソッドは、Rangeオブジェクトのメソッドで、ワークシート操作の「検索と置換」の「検索」の機能をマクロVBAで使うものになります。上の画像では「検索する文字列」だけしか指定できませんが、「オプション」をクリックすると、
20.オートフィルター(AutoFilter)|VBA入門
オートフィルタはExcelのデータベースとしての非常に強力な機能が提供されています。マクロVBAで、必要なデータだけに絞り込んで他のシートにコピーしたり、不要なデータを一括で削除したりする場合は、とても高速に処理することができます。マクロVBAでオートフィルタを操作するには、以下のメソッド・プロパティおよびオブジェク…


フリーソフト、シェアウェア・・・Excelは購入によりVBAコードも開示

※現在は公開を停止しています。

フリーソフト、シェアウェア、ソフト一覧

使った感想などをお寄せくだされば、今後の開発に生かしていきます。
試用版の場合は、プロダクトキーの入力だけで有料版へ移行できます。
まずは一度、お試し下さい。

「お客様第一」顧客管理システムは有料ソフトです、試用版を用意してあります。
「エクセル顧客管理」は顧客管理です。購入でVBAコードも開示します。
「エクセル営業管理」は見積・請求・スケジュール・会計管理です。購入でVBAコードも開示。
「たぶん同期」フォルダ同期ソフトはフリーソフトです、ご自由にどうぞ。
「エクセル集」総務部、社会保険労務士向け、完全フリーです。





このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。

このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ