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

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

本サイトについて

エクセル(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-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度通れないという制限がついています。
VBA100本ノック 魔球編:閉領域の塗り潰し|VBA練習問題(2020-12-16)
四方を罫線で囲まれている範囲内のセルを塗りつぶす問題です。ツイッター連動企画です。ツイートでの見やすさを考慮して、ブック・シート指定等を適宜省略しています。出題 出題ツイートへのリンク #VBA100本ノック魔球編2 シート内のセルが四辺の罫線(線種は問わず)で完全に塞がれている閉じた範囲内にある場合、
VBA100本ノック 魔球編:組み合わせ問題|VBA練習問題(2020-12-02)
5つの数字から決められた数値合計に最も近くなる組み合わせを求める問題です。ツイッター連動企画です。ツイートでの見やすさを考慮して、ブック・シート指定等を適宜省略しています。出題 出題ツイートへのリンク #VBA100本ノック魔球編 5つの数値を引数で受け取ります。
将棋とプログラミングについて~そこには型がある~|エクセル雑感(2020-11-22)
将棋とプログラミングは似ているだろうか。似ている所もあるが違う違う所もある。答えになっていませんね(笑) 脳のどの部分を使うとか難しいことは分かりませんが、やっているときにどんなイメージを持ってやっているのでしょうか。
VBA100本ノック 1本目:セルのコピー|VBA練習問題(2020-10-19)
セルのコピーに関する問題です。セルの全てをコピーします。ツイッター連動企画です。ツイート文字数制限があるので、ブック指定等省略可能な記述は省略しています。VBAテスト用のサンプルデータはご自身でご用意ください。
VBA100本ノック:マクロの特訓(2020-10-19)
マクロVBAを初心者向けの基本から上級者向けの高度な内容までサンプルコードを掲載し解説しています。エクセル関数・機能・基本操作の入門解説からマクロVBAまでエクセル全般を網羅しています。
数式の関数の使用回数、関数名を配列で返す|エクセル雑感(2020-10-19)
ツイッターで出したエクセルVBAのお題です。セルに入っている計算式に使われている関数(ユーザー定義含む)を数えてみましょう、というお題になります。問題を出したツイート 【VBAお題】セルに計算式が入っています。
Rangeオブジェクトを受け取り"行数,列数"で埋める|エクセル雑感(2020-10-16)
ツイッターで出したエクセルVBAのお題です。Rangeオブジェクトを受け取り、"行数,列数"の値(数式ではなく値)で埋めるVBAを書く問題です。問題を出したツイート 【VBAお題】 Rangeオブジェクトを受け取り、添付のように"行数,列数"の値(数式ではなく値)で埋めてくだ…
数値変数の値を別の変数を使わずに入れ替える|エクセル雑感(2020-10-13)
ツイッターで出したエクセルVBAのお題です。数値が入っている3つの変数を、他の変数を使わずに値を入れ替えるという問題です。問題を出したツイート 【VBA問題】 変数a,b,cに整数値が入っています。これをa>b>cとなるように値を入れ替えてください。
WEBスクレイピング(selenium)|Python入門(2020-10-11)
PythonでWEBスクレイピングをします。これにはいろいろな方法がありますが、定番ともいえるseleniumを使います。seleniumを使う事で、WEBスクレイピングがとても簡単に行う事ができるようになります。
エクセルを操作する(pywin32:win32com)|Python入門(2020-10-05)
PythonでExcelファイルを扱ってみましょう。前回は外部ライブラリのopenpyxlを使いました。第24回.エクセルを操作する(openpyxl) 今回は外部ライブラリのpywin32を使います。
エクセルを操作する(openpyxl)|Python入門(2020-10-03)
PythonでExcelファイルを扱ってみましょう。それには、外部ライブラリのopenpyxlを使うと便利ですし、簡単に扱う事が出来ます。openpyxlはとても機能が豊富で、エクセルに対するかなり多くの事が出来ます。



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

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


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

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

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

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

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





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


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


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