エクセル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)の中で...
VBAテクニック辞典

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【VBA】行を削除する

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

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

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

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

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

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

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

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

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

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

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

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

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

【VBA】行を選択する

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

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

VBAでセルを選択状態にする時は、Selectメソッドを使用します。 対象セルの指定方法は、「Rangeによる方法」と、「Cellsによる方法」があります。 Rangeを使ったセルの選択 Rangeプロパティで選択...
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】エクセルファイルを保存しないで閉じる

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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