エクセルVBA

VBAテクニック辞典

【VBA】コピーしたワークシートに名前を設定する

ActiveSheet.Nameプロパティで設定Copyメソッド実行直後に、ActiveSheetのNameプロパティに名前を設定します。シートをコピーした直後には、コピーして新しく作成したシートがアクティブになっているからです。コード解説...
VBAテクニック辞典

【VBA】ワークシートを最後にコピーする

After:=Worksheets(Worksheets.Count)でシートコピーブックの最後(1番右)にコピーしたシートを作成するには、Copyメソッドの引数に、After:=Worksheets(Worksheets.Count)と書...
VBAテクニック辞典

【VBA】ワークシートを先頭にコピーする

Before:=Worksheets(1)でシートコピーブックの先頭(1番左)にコピーしたシートを作成するには、Copyメソッドの引数に、Before:=Worksheets(1)と書きます。Beforeは、シートを作成する場所を指定する引...
VBAテクニック辞典

【VBA】指定したシート以外のシートをすべて削除する

ループ処理で1つずつシート名を比較し削除繰り返し処理の中で、1つずつ「処理中のワークシート名」と「指定したシート名」を比較し、名前が違う時に削除処理をおこないます。コード解説繰り返し処理(For Each)の中で、targetSheet.N...
VBAテクニック辞典

【VBA】アクティブシートを削除する

ActiveSheet.Deleteで削除アクティブシートを削除したい時は、ActiveSheet.Deleteで削除できます。コード解説アクティブシートを削除する命令の前後では、Application.DisplayAlertsを使って、...
VBAテクニック辞典

【VBA】複数のワークシートをまとめて追加する

Count:=数値 でシートを追加Worksheets.Addで新しいシートを追加する時に、「Count:=数値」を指定します。指定した数値の数だけシートが追加されます。コード解説サンプルコードでは、Count:=2となっているので、シート...
VBAテクニック辞典

【VBA】新しいワークシートを最後に追加する

After:=Worksheets(Worksheets.Count)でシートを追加Worksheets.Addで新しいシートを追加する時に、After:=Worksheets(Worksheets.Count)と指定すると、シートの最後(...
VBAテクニック辞典

【VBA】新しいワークシートを先頭に追加する

Before:=Worksheets(1)でシートを追加Worksheets.Addで新しいシートを追加する時に、Before:=Worksheets(1)と指定すると、シートの先頭(1番左)に追加されます。コード解説Before:=Wor...
VBAテクニック辞典

【VBA】パスワードが設定されたエクセルファイルを開く

パスワードの設定されたエクセルファイルをVBAで開こうとすると、パスワードの入力画面が表示されてしまいます。パスワードもVBAで自動入力し、パスワード入力画面を表示せずにエクセルファイルを開く方法になります。「読み取りパスワード」と「書き込...
VBAテクニック辞典

【VBA】パスワードを設定してエクセルファイルを保存する

エクセルファイルにパスワードを設定して保存する場合、パスワードには次の2種類があります。 読み取りパスワード:パスワードを知らないと中身を見ることもできない 書き込みパスワード:パスワードを知らないと保存できないが、中身を見ることはできるフ...
VBAテクニック辞典

【VBA】同名ファイルが存在しても、メッセージ非表示で上書き保存する

Application.DisplayAlertsでメッセージを制御する新規のエクセルファイル(ブック)に名前を付けて保存する時、すでに同じ名前のファイルが存在すると、下の警告メッセージが表示されVBAの処理が止まってしまいます。そのため、...
VBA勉強方法

エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介

僕は職業訓練校で、エクセルVBAの講師を何回かしたことがあるのですが、その時に教科書を選ぶことになったので、多くのエクセルVBAの本をチェックしました。なので、その中から特に良かった書籍を目的別に紹介していきます。エクセルVBAに興味があっ...
VBAエラー原因・解決方法

「For…Next 内に対応する Exit For がありません。」の原因・解決方法

エラー内容VBAコンパイル時に、「For...Next 内に対応する Exit For がありません。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. For文の外にExit Forがある解説Exit F...
VBAエラー原因・解決方法

「End With に対応する With がありません。」の原因・解決方法

エラー内容VBAコンパイル時に、「End With に対応する With がありません。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. Withに対してEnd Withの方が多い解説Withの終わりをV...
VBAエラー原因・解決方法

「End With が必要です。」の原因・解決方法

エラー内容VBAコンパイル時に、「End With が必要です。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. Withの閉じ忘れ解説Withステートメントの終わりで、End Withを 書いていないと...
VBAエラー原因・解決方法

「End If に対応する If ブロックがありません。」の原因・解決方法

エラー内容VBAコンパイル時に、「End If に対応する If ブロックがありません。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. Ifに対してEnd Ifの方が多い解説If文の終わりをVBAに教え...
VBAエラー原因・解決方法

「Else に対応する If がありません。」の原因・解決方法

エラー内容VBAコンパイル時に、「Else に対応する If がありません。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. Elseの直前にEnd If解説Elseの直前にEnd Ifがあると、そこでI...
VBAエラー原因・解決方法

「If ブロックに対応する End If がありません。」の原因・解決方法

エラー内容VBAコンパイル時に、「If ブロックに対応する End If がありません。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. If文の閉じ忘れ解説If文の処理の終わりで、End Ifを書いてい...
VBAエラー原因・解決方法

「Next で指定された変数の参照が不正です。」の原因・解決方法

エラー内容VBAコンパイル時に、「Next で指定された変数の参照が不正です。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. ForとNextの変数が違う解説Forでカウンターに指定している変数と、Ne...
VBAエラー原因・解決方法

「Next に対応する For がありません。」の原因・解決方法

エラー内容VBAコンパイル時に、「Next に対応する For がありません。」と表示される。原因と解決方法原因1. Ifに対応するEnd Ifがない解説For文の中で使われているIf文に、対応するEnd Ifがない時に起こります。このエラ...
VBAエラー原因・解決方法

「For に対応する Next がありません。」の原因・解決方法

エラー内容VBAコンパイル時に、「For に対応する Next がありません。」と表示される。原因と解決方法おもに次の2つの原因と解決方法が考えられます。原因1. For文の閉じ忘れ解説繰り返し処理の終わり(For文の処理の最後)に、Nex...
VBAエラー原因・解決方法

「Sub または Function が定義されていません。」の原因・解決方法

エラー内容VBAコンパイル時に、「Sub または Function が定義されていません。」と表示される。原因と解決方法おもに次の3つの原因と解決方法が考えられます。原因1. プロシージャが存在しない解説エラー内容そのままで、呼び出し先のプ...
VBAエラー原因・解決方法

「変数が定義されていません。」の原因・解決方法

エラー内容VBAコンパイル時に、「変数が定義されていません。」と表示される。原因と解決方法変数の宣言を強制している時(モジュールの先頭でOption Explicit)に、変数の定義が正しくされていないと発生するエラーです。注意!一部のサイ...
自動化ツール・便利プログラム集

セルを判定し背景色を自動でセットする【文字指定】

対象セルの値を判定して、背景色を自動でセットするツールです。(最初の画像は、住所に「宇佐市」が含まれているセルに、背景色を自動でセットした結果です。)指定した文字と完全一致するセル、または指定した文字が含まれるセルの背景色を自動でまとめて設...
自動化ツール・便利プログラム集

セルを判定し背景色を自動でセットする【数値指定】

対象セルの値を判定して、背景色を自動でセットするツールです。テスト結果などの点数や、金額など数値データが大量にある時、自動でまとめて背景色を設定することができます。氏名や住所など文字条件を指定したい場合は、セルを判定し背景色を自動でセットす...
VBA超入門

セルを扱う時はファイル名・シート名も指定

当サイト「えくとしょ」や多くの参考書でも、セルの値を調べたり、セットする時にRangeでセルの位置だけを指定してプログラムしています。でもキビシイ見方をすると、「セルの位置は指定しているけど、ファイルとシートは指定していない」ということです...
VBA超入門

オブジェクトとメソッド・プロパティの基本

「人間」を例に、「エクセル」と比べながら、オブジェクトとメソッド・プロパティを説明していきます。今回は誰でもイメージしやすいように、「人間」を物のような表現で扱っています。オブジェクトってなに?エクセルには、ブック(ファイル)やシート、セル...
VBA超入門

繰り返し|For文の基本的な書き方・使い方

今回説明するFor文こそ、学校や職場で繰り返ししているエクセルの同じような処理を、自動化・効率化できる大事なテクニックです。またFor文を使うと、繰り返し行う同じ処理のプログラム部分は1回だけ書けばよく、繰り返す回数を指定するだけでOKです...
VBA超入門

条件分岐|If文の基本的な書き方・使い方

プログラミングを始めたばかりだと「プログラムができれば、何でも自動でパソコンがしてくれる」と思う人もいます。たしかにプログラムを組めば自動でパソコンに処理をさせることはできますが、判断する時の条件は人間が教えてあげないといけません。つまり「...
VBA超入門

変数の基本|宣言の書き方・使い方

VBAなどプログラムを学ぶなら、避けては通れない基本の1つが変数です。「変数?単語を聞いただけで難しそう・・・」となるかもしれません。でも、プログラムを勉強していると、初めて聞く言葉や、難しそうな固い言葉がよく出てきてきます。ここで拒絶しな...
VBA超入門

エクセルVBAを書く場所と動かす方法

エクセルVBAのプログラムを書く場所と、動かす方法を説明していきます。サンプルプログラムでは「セルの背景色をセットする」処理を実行してみます。なのでプログラムを間違えても、他のエクセルファイルに影響を与えないために、すべてのエクセルファイル...
VBAテクニック辞典

【VBA】条件と一致するセルの背景色を設定する関数

ループ処理で条件判断と背景色をセットセルの値が条件と一致する時に、セルの背景色を設定する関数です。戻り値として、一致したセルの件数を返します。「セルの条件」、「調べるセル範囲」、「背景色」が指定できます。調べるセル範囲に、条件に一致するセル...
VBAテクニック辞典

【VBA】列を削除する(1列だけ、連続した複数列、離れた複数列)

VBAで列を削除する時は、RangeやColumns、EntireColumnのDeleteメソッドを使用します。対象列の指定方法には、「列番号による数値指定」、「列名によるアルファベット指定」があります。EntireColumnの場合は、...
VBAテクニック辞典

【VBA】行を削除する

VBAで行を削除する時は、Deleteメソッドを使用します。削除する行を指定するには、RangeやRowなど3つの方法があります。1行削除する1つの行を削除するには、3つの方法があります。サンプルコードでは、2行目を削除します。方法1. R...
VBA超入門

VBAでプログラミングをするための前準備

エクセルのリボン(上段のエリア)には、タブやタブなど機能ごとに分類されています。エクセルVBAでプログラミングをする時には、そのリボンの中にあるタブを使います。ただし、初期状態では開発タブは表示されていないので、このページではタブの表示方法...
VBAテクニック辞典

【VBA】強制的にエラーを発生させる

VBAのプログラムから、強制的にエラーを発生させたい場合は、Err.Raiseを使います。実際には発生していないエラーを、エラー番号を指定して発生させることができます。また、使用されていないエラー番号を使い、エラー内容を独自に設定することも...
VBAテクニック辞典

【VBA】文字色の設定されたセルをカウントする関数

ループ処理でFont.Colorを調べるループ処理で、Font.Color(文字色)を調べてカウントしています。調べるセル範囲と、カウント対象の文字色を指定すると、対象のセル件数を返す関数です。コード引数の説明searchArea検索対象と...
VBA勉強方法

エクセルVBAを学ぶメリット・デメリット

これからエクセルVBAを勉強してみようか迷っている人は、まずはVBAを勉強するメリット・デメリットを確認してみてください。なんとなく勉強をはじめても、ほぼ間違いなく途中で挫折します。自分にとってVBAというプログラムは、学ぶ価値があるかどう...
VBA勉強方法

エクセルVBAのおすすめ勉強方法|それぞれのメリット・デメリット

これからエクセルVBAを勉強を始めようと思っている人に、おすすめの勉強方法を4つ紹介します。それぞれにメリット・デメリットがあるので、自分の生活や経済状況に合わせて、今の自分に適している勉強方法を選んでください。いろいろな勉強方法があって、...
VBAテクニック辞典

【VBA】列を選択状態にする(1列だけ、連続した複数列、離れた複数列)

VBAで列を選択状態にする時は、RangeプロパティのSelectメソッドを使用します。対象列を指定するには、RangeやColumnsなどいくつかの方法があります。1列だけ選ぶ【実行結果】次の3つの選択方法があります。例では、2列目を選ん...
VBAテクニック辞典

【VBA】行を選択する

VBAで行を選択状態にする時は、Selectメソッドを使用します。選択する行を指定するには、RangeやRowなど3つの選択方法があります。1行選択する1つの行を選択します。サンプルコードでは、2行目を選択状態にします。方法1. Range...
VBAテクニック辞典

【VBA】セルの選択とテクニック

VBAでセルを選択状態にする時は、Selectメソッドを使用します。対象セルの指定方法は、「Rangeによる方法」と、「Cellsによる方法」があります。Rangeを使ったセルの選択Rangeプロパティで選択するセルを指定し、Selectメ...
VBAテクニック辞典

VBAカラー一覧(組み込み定数、RGB値、16進数)|色見本あり

VBAでは、カラーを指定する時に使える組み込み定数があります。組み込み定数を使えば、カラーコード(RGB値や16進数)がわからなくても、簡単にセルの文字色や背景色を設定・取得できます。プログラムを見た時にも、定数名を使った方が具体的な色が直...
VBAテクニック辞典

【VBA】セルの書式設定一覧(フォントやサイズなど)

フォントや色以外にも、下線や太字などもVBAで設定できます。フォントの設定Font.Nameプロパティに、フォント名を設定します。フォント名は、ダブルクォーテーションで囲みます。POINTフォント名を手入力すると、半角スペースが全角スペース...
VBAテクニック辞典

【VBA】すべてのエクセルファイルを保存しないで閉じる

繰り返し処理中はメッセージを非表示にして閉じる複数のエクセルファイルを保存しないで閉じる場合は、For Each…Nextですべてのエクセルファイルを1つずつ処理していきます。この時、Closeメソッドでファイルを閉じるだけでは確認メッセー...
VBAテクニック辞典

【VBA】新しいエクセルファイルに名前を付けて保存する

SaveAsメソッドで名前を付けて保存新しいエクセルファイルに名前を付けて保存する時は、SaveAsメソッドを使います。コード解説新しいエクセルファイルの編集後(シート追加など)に、SaveAsメソッドで名前を付けて保存しています。保存する...
VBAテクニック辞典

【VBA】すべてのエクセルファイルを上書き保存して閉じる

For Each…Nextで繰り返し処理する複数のエクセルファイルにデータの書き込みなどをした後、まとめて上書き保存・閉じる場合は、For Each…Nextですべてのエクセルファイルを1つずつ処理していきます。コード解説VBAが記述されて...
VBAテクニック辞典

【VBA】エクセルファイルを保存しないで閉じる

Application.DisplayAlertsでメッセージを制御するVBAのCloseメソッドでエクセルファイルを閉じる時、ファイルに変更があった場合、次の確認メッセージが表示されます。このメッセージが表示されてしまうと、せっかくVBA...
VBAテクニック辞典

【VBA】エクセルファイルを上書き保存して閉じる

開いているエクセルファイル(ブック)を上書き保存するにはSaveメソッド、閉じる時はCloseメソッドを使用します。保存するエクセルファイルは、「ファイル名」または「ワークブック変数」で指定できます。ファイル名で指定Workbooksコレク...
VBAテクニック辞典

【VBA】新しいエクセルファイルを作成する

Workbooks.Addメソッドで作成新しいエクセルファイル(ブック)を作成する時には、Workbooks.Addメソッドを使います。コード解説エクセルファイルを新規作成したタイミングで、ワークブック変数(newExcelFile)に作成...
VBAテクニック辞典

【VBA】作成済みのエクセルファイルを開く

Workbooks.Openメソッドで開くすでにデータなどが保存されているエクセルファイルを開く時は、Workbooks.Openメソッドを使います。Openする時は、フルパス(フォルダとファイル名)で指定します。コード解説Workbook...
VBAテクニック辞典

【VBA】シートをコピーして、同じシートを複数作る

ループ処理でコピーするひな形のシートをコピーして複数作成したい時は、Copyメソッドをループ処理で繰り返し実行します。コード解説VBAのエクセルファイルにある「見積ひな型」シートをコピーして、同じシートを10枚作っています。プログラムの読み...
VBAテクニック辞典

【VBA】シートを新しいエクセルファイルにコピーする

Copyメソッドだけで実行コピーする時に、Before、After(コピーを作成する場所)を省略します。すると、新しいエクセルファイルが自動で作成され、その新しいエクセルファイルにシートがコピーされますコード解説新しいエクセルファイルが作成...
VBAテクニック辞典

【VBA】別ファイルのシートをコピーする

Workbooksでコピー元ファイルを指定しコピー他のエクセルファイルのシートをコピーする時、まずはコピー元のファイルを開きます。(※開いていないと、コピーできないため)コピーする時、コピー元ファイルはWorkbooks("ファイル名")で...
VBAテクニック辞典

【VBA】ワークシートのコピーとテクニック

Copyメソッドワークシートをコピーするには、WorksheetsのCopyメソッドを使います。コピーしたシートは、新しいブックに作成されます。コード解説新しいブックに「住所一覧」シートが作成されます。その他テクニックワークシートを先頭にコ...
VBAテクニック辞典

【VBA】非表示のシートを右クリックで再表示できないようにする

シートのVisibleプロパティにxlSheetVeryHiddenを設定すると、一般ユーザは右クリックでシートを再表示できなくなります。設定方法には、「VBAによる方法」と「手動(デザイナ)による方法」の2つがあります。VBAでVisib...
VBAテクニック辞典

【VBA】特定のブックにシートが存在するか調べる関数

指定したシートが存在するか調べるには、「ループ処理でシート名を調べる方法」と「オブジェクト変数を使って調べる方法」の2つがあります。よく使う機能なので関数化しています。シート名だけでなくブック名も指定可能としています。ループ処理でシート名を...
VBAテクニック辞典

【VBA】アクティブシート以外のシートをすべて削除する

ループ処理でアクティブシート名と比較し削除繰り返し処理の中で、1つずつ「ワークシートの名前」と「アクティブシートの名前」を比較し、名前が違う(=アクティブシートではない)時に削除処理をおこないます。コード解説今回の例では、変数jogaiSh...
VBAテクニック辞典

【VBA】複数のワークシートをまとめて削除する

ワークシートの削除自体はDeleteメソッドを使いますが、削除するシートの指定方法がいくつかあります。今回は、3つの方法を紹介しているので、使いやすい&理解しやすい方法を選んでください。シート名を配列で指定して削除Worksheets(Ar...
VBAテクニック辞典

【VBA】ワークシートの削除とテクニック

ワークシートを削除する時は、Deleteメソッドを使います。削除するシートは、「シート名」や「インデックス(何番目)」で指定できます。シート名で指定し削除Worksheets("○○").Deleteと書き、○○の部分に「シート名」を指定し...