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

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

本サイトについて

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

エクセル入門 : 操作、関数、ショートカットの使い方を解説
エクセル基本操作 : 知ってそうで知らない基本操作について解説
エクセル関数応用 : 関数の応用・高等テクニックを紹介
エクセル挑戦問題 : 簡単にできそうで、なかなか出来ない問題
Excelリファレンス : ショートカットキー一覧や関数一蘭
エクセル雑感 : 関数やVBAついての一般的な話や雑感

ExcelマクロVBA入門 : VBA入門・基礎として、未経験者でも理解できるように詳しく説明
ExcelマクロVBA再入門 : 書籍やWEBをみて結局挫折してしまった方を対象に実戦形式で
マクロの記録で覚えるVBA : マクロの記録のVBAコードを読み、そして修正しつつVBAを覚えてる
マクロVBA練習問題 : マクロVBA入門学習の一環として練習問題を用意
MOS VBAエキスパート対策 : VBAエキスパート試験に必要なVBA知識についての対策
ExcelマクロVBA関数 : 一般的に良く使われるVBA関数を解説

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

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

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



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

新シリーズ!ツイッター連動企画「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・・・新着記事一覧をもっと見る

エクセル馬名ダービー|エクセル雑感(2021-07-21)
ツイッターで競走馬の変わった名前についてツイートしたところから話が大きくなって、、、ついに「エクセル馬名ダービー」を開催することになりました。ツイッターで寄せられたエクセルに関する馬名(と言えない名前もw)で競馬を行う事に相成りました。目次 発端となったツイート 登録馬一覧(五十音順) 登録馬一覧(馬主別) 新馬戦…
在庫を減らせ!毎日棚卸ししろ!|エクセル雑感(2021-07-05)
これはフィクションです。ツイッターで深夜に在庫と棚卸しについて昔話として語ったものの「まとめ」になります。https://twitter.com/yamaoka_ss/status/1411734968343040004 ツイートまとめ 在庫は少なくてすむなら少ない方が良いですからね。
日付型と通貨型のValueとValue2について|エクセル雑感(2021-06-26)
ツイッターでVBAに関する問題を出しました。問題としてはValueとValue2について問うもので、日付型と通貨型が問題の焦点になります。https://twitter.com/yamaoka_ss/status/1408259798357794817 VBA問題の出題ツイート 【VBA問題】 Rangeに対して、
DXってなんだ? ITと何が違うの?|エクセル雑感(2021-06-24)
ツイッターでDXはITとどう違うのかを問うツイートをしました。最初は反応がほとんどなかったのですが、再度引用ツイートしたところ、いろいろな話を伺えました。それを受けて、私なりの考え(ほぼ単なる感想)を連続ツイートしました。
エクセルVBA 段級位 目安|エクセル雑感(2021-06-21)
ツイッターで3日間に渡って順次ツイートしたもののまとめです。筆者の独断と偏見で書いているものですし、かつ、たたき台・原案なので、変更することがあります。各級位の内容は「VBA入門」に解説ページがあります。
ローカル版エクセルが「Office Scripts」に変わる日|エクセル雑感(2021-06-10)
ツイッターでエクセルのマクロ言語がVBAからOfficeScripts変わるかについて連続ツイートした時のまとめです。https://twitter.com/yamaoka_ss/status/1404122608287698944 ローカル版のExcelがVBAからTypeScriptになろうがPythonになろ…
新関数SORTBYをVBAで利用するラップ関数を作成|VBA技術解説(2021-06-12)
新関数はスピルに対応していてとても便利です。新関数はVBAからもWorksheetFunctionで利用できます。シート関数には件数制限があるので使用する場合は注意が必要ですが、その範囲内ならVBAでもとても便利に利用できます。
VBA今日のひとこと/VBA今日の教訓 on Twitter|エクセル雑感(2021-06-10)
ツイッターで時々「VBA今日のひとこと」「VBA今日の教訓」として発信しています。そのまとめとしてここに記録しておきます。カレンダー 今日のひとこと…2021年5月28日(金) VBA今日のひとこと とりあえずこれだけは覚えておこう Ctrl+G Application.ScreenUpdating=True En…
VBAの演算子まとめ(演算子の優先順位)|VBA技術解説(2021-06-09)
VBAの演算子はそれほど多くはないので通常使う範囲では困ることは少ないのですが、他人の書いたVBAで特殊な使い方がされていた場合等で悩むことは結構あるかもしれません。そのような時の参考として演算子のまとめになります。VBA入門の以下の解説ページの演算子についてのまとめと補足です。
画像が行列削除についてこない場合の対処|VBA技術解説(2021-06-04)
複数ブック・複数シートを次々に処理していくようなVBAにおいて、行削除や列削除をした時に、画像がセルの移動についてこない場合があります。プロパティは、「セルに合わせて移動やサイズ変更をする」になっている場合です。プロパティで「セルに合わせて移動する」になっているにも関わらず、画像が行列削除で移動しないといった現象が…
エクセル関連で「いいね」の多かったツイート|エクセル雑感(2021-05-17)
シート数が多い場合、先頭シートor最終シートへの移動は、Ctrl押しながらをクリックすれば移動できます。もしかして、あまり知られていなかったりしますか。エクセルの機能としては結構後になって変更された機能です。
キーボード操作だけで非表示列を表示|エクセル雑感(2021-05-11)
ツイッターで出したエクセル基本操作のお題です。マウスを使わずにキーボード操作だけで非表示列を表示させる手順を示してください、というお題になります。問題を出したツイート 【エクセル基本操作問題】 A列とC列が非表示になっています。
変数を考えることはロジックを考える事|エクセル雑感(2021-04-11)
変数を考えることはロジックを考える事 変数宣言の位置についての議論は絶えません。先頭に宣言、直前で宣言 しかし、これらは単なるコーディング上のテクニックの話であり本質から離れています。中上級者になってからのテクニックとプログラミングの本質がごっちゃになって議論されてしまっている気がします。
RangeオブジェクトのFor EachとAreasについて|VBA技術解説(2021-04-08)
【VBA問題】 ?Range("A1:B3,C2:E5").Columns.Count さて結果は? 2 3 5 にゃんともいえない ツイッターでこのような出題をしました。この出題にたいする解説記事になります。正解は 2 RangeオブジェクトにはAreasがあります。
PropertyのSetはLetでも良い|VBA技術解説(2021-03-31)
クラス等にプロパティを作成する場合、Let Set Get この3種類があります。クラスモジュール、フォーム、標準モジュール、これらにプロパティを作成するには、Property{Get|Let|Set}ステートメントを使用します。Propertyの文法詳細については以下を参照してください。
エクセル麻雀ミニゲーム|VBAサンプル集(2021-03-09)
マクロVBAを使った麻雀ミニゲームです。「配牌」で30枚の牌がランダムに表示されます。クリックで牌を選択し、再度クリックすると選択が解除されます。和了(ホーラ、あがり)することを目指すゲームです。13枚選択時に聴牌判定をしていますので、聴牌出来ない選択ははじかれます。
VBA100本ノック 100本目:WEBから100本ノックのリストを取得|VBA練習問題(2021-03-03)
WEBページから100本ノックのリストを取得する問題です。ツイッター連動企画です。ツイートでの見やすさを考慮して、ブック・シート指定等を適宜省略しています。xlsmはご自身でご用意ください。出題 出題ツイートへのリンク #VBA100本ノック100本目 以下のページにはVBA100本ノックのリストが掲載してあります。
VBA100本ノック 魔球編:2桁の最小公倍数|VBA練習問題(2021-02-02)
任意の重複しない5つの2桁の数値を選び、最小公倍数が2桁である5つの数値を見つける問題です。ツイッター連動企画です。ツイートでの見やすさを考慮して、ブック・シート指定等を適宜省略しています。出題 出題ツイートへのリンク #VBA100本ノック魔球編 全て違う2桁の正の整数が5つあるとき、最小公倍数が2桁の数値になる…
Select Caseでの短絡評価(ショートサーキット)の使い方|VBA技術解説(2021-01-03)
VBAには、AndやOrの短絡評価(ショートサーキット)がありません。プログラミング言語によりますが、&,|これらに対しての&&,||これらが短絡評価です。VB.Netなら、AndAlso,OrElseこれらが短絡評価になります。
VBA100本ノック 迷宮編:巡回セル問題|VBA練習問題(2020-12-31)
方形セル範囲の左上からスタートし黄色中間地点を通過し右下にゴールする最短経路を探索する問題です。いわゆる、巡回セールス問題のエクセル版としてセルを使ったものです。ただし、一度通ったセルは2度通れないという制限がついています。



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

1.最終行の取得(End,Rows.Count)|VBA入門
Excelワークシートにおける表の最終行の取得は、マクロVBAの必須技術になります、エクセルVBAにおける最終行取得の必要性 エクセルは表計算ソフトです、つまり縦横の表を扱います、データは横に項目があり、縦に項目に対するデータが入っている事が一般的です。しかし、そのデータ行数は決まった行数ではない事が普通です。
2.Excelショートカットキー一覧|Excelリファレンス
Excel作業を効率化するショートカットキーの一覧と、必須ショートカットの詳細解説です、ショートカットは画面や選択状態により変化しますので注意して下さい。機能別一覧とキー順一覧の2通りで一覧表にしています。Excelショートカットキー機能別一覧 Excelショートカットキーキー順一覧 Excelショートカットキー機…
3.変数宣言のDimとデータ型|VBA入門
マクロVBA入門者が、まず最初につまずくのが、このDimで変数を宣言することでしょう。変数とは、数値や文字列など(すなわちデータ)を一時的に格納する入れ物 と良く説明されますが、まずはこの考えで良いでしょう。この入れ物には、いろいろなタイプの入れ物があります。
4.RangeとCellsの使い方|VBA入門
VBAではセルを指定する方法としてRangeとCellsがあります、RangeもCellsも、どちらもRangeオブジェクトでセルを指定するものです。どちらを使ったらよいのでしょうか、どう使い分けたらよいのでしょうか、実際のマクロVBA記述では、RangeとCellsを使い分ける必要があります、RangeとCell…
5.マクロって何?VBAって何?|VBA入門
エクセルのマクロって何でしょうか? ExcelのVBAって何でしょうか? 「マクロ」とは、エクセルの操作を自動化するものです。その自動化する機能が、「マクロ」と呼ばれています。マクロの中身は、プログラムです。
6.繰り返し処理(For Next)|VBA入門
VBAのForNextは、同じ処理を繰り返し行うためのVBA構文です。繰り返し処理はループ処理とも呼ばれます。マクロでのループ処理の記述は何通りかありますが、まず最初に覚えるべきものが、今回説明するForNextです。
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。"A1"や"B5"と言うような文字で指定するのでは何かと不便です、もっと、プログラムっぽい(笑)指定方法があります。
8.セルに文字を入れるとは(Range,Value)|VBA入門
前回実行したマクロを、もう少し詳しく見てみましょう。どうして、これでセルに値がはいるのか、どうやってVBAを読んだらよいのか、少しだけ詳しく解説します。とにかくこれで、A1セルに、「おはよう!」と入る事がわかりました。
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
それでは、とにかく、マクロVBAを書いてみましょう。sub練習1 と入力し、Enterして下さい、このように、subがSubと先頭が大文字になり、後ろに()が付きます。そして、下に、EndSubが追加されます。
10.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
値の貼り付けと題しましたが、値だけではなく、「形式を選択して貼り付け」のいろいろな指定方法です。セルをコピーして、他のセルに「形式を選択して貼り付け」する場合のマクロVBAコードです。セルの値や書式を別のセルにコピーすることはマクロVBAでは定番かつ必須の技術になります。
11.マクロはどこに書くの(VBEの起動)|VBA入門
さて、ではマクロVBAはどこに書いたらよいのでしょうか。まずは、マクロVBAを書くための紙に相当する編集画面を出します。このマクロVBAの編集画面をVisualBasicEditor、略してVBEと呼びます。
12.並べ替え(Sort)|VBA入門
並べ替えは、データ処理の基本中の基本です、乱雑なデータを並べ替えることは、データ処理の第一歩です。マクロVBAで並べ替えを実行するには、シート操作の「並べ替え」の機能を使用することになります。そもそもデータを並べ替えるという事は、そのデータのキーが何かを考えるという事です。
13.繰り返し処理(Do Loop)|VBA入門
繰り返し処理として、前回はFor~Nextをやりました、今回はDo~Loopです。For~Nextに比べると使用頻度は落ちますが、必ず覚える必要があるものです。For~Nextは、繰り返す回数をあらかじめ指定するものでしたが、Do~Loopは、繰り返す回数ではなく、繰り返す条件を指定するものです。
14.まずはマクロVBAを使う準備|VBA入門
さっそくマクロを作りましょう。と、その前に、準備があります、上部のリボンに、「開発」タブを追加します、「開発」タブには、マクロを開発するにあたって必要なアイコンが並んでいます。※画像は、Excel2013になります。
15.Rangeでのセルの指定方法|VBA入門
前回までに出てきたRangeの使い方は、Range("A1") このように書くことで1つのセルを指定する場合でした。複数のセル範囲を指定する場合、矩形のセル範囲、行全体、列全体、特殊なセル範囲 これらの指定方法を見ていきましょう。複数のセル(矩形のセル範囲) 複数のセル(矩形のセル範囲)を指定する場合のVBAの書き…
16.VBEのオプション設定(Option Explicit)|VBA入門
マクロを書き始める前に、出来れば設定しておいた方が良いオプションがあります。いえ、絶対に設定しておかなければならないVBEのオプション設定です、必ず、最初に設定しておいてください。VBEの「ツール」→「オプション」以下の画面が出ます。
17.マクロを実行するには(F5)|VBA入門
それでは前回作ったマクロ、「練習1」を実行してみましょう。マクロを実行する方法は、大きく2通りあります、・VBEの画面で実行 ・ワークシートで実行 その時の都合で、どちらで実行しても構いません。ボタンをクリックすることでマクロが自動実行されるのを見たことがあるかもしれません。
18.マクロの記録|VBA入門
エクセルのマクロを説明する上では、まず最初に、「マクロの記録」を説明しなければなりません。マクロの自動記録とも言われたりしますが、要は、エクセルの手動での操作が、自動記録されるものです、もちろん、マクロの言語であるVBAで記録されます。実際には、マクロの記録から作成されたマクロVBAコードを修正して使う事はしません。
19.セルに計算式を設定(Formula)|VBA入門
セルに計算式(関数)を設定する場合のマクロVBAになります。マクロでは、セルに計算式を設定することは、そんなに多くないと思いますが、決して使わないわけではありません。しかし、この計算式の設定には何種類ものプロパティがあり、結構やっかいなのです。
20.条件分岐(IF)|VBA入門
ある条件の時だけ処理したい、ある条件の時は処理したくない、そのような条件によって処理内容を変更したい場合があります。VBAで条件により処理を分岐させたい場合に使うのが、Ifステートメントです。マクロVBAで自動化する場合の多くは、条件により処理を変えつつ一定回数繰り返すという事です。


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

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

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

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

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





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


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


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