エクセルVBA

VBAテクニック辞典

【VBA】セルの文字列の一部だけ書式を変更する(位置指定、特定の文字列、数字だけ)

文字列の位置を指定して書式を設定する場合は、Charactersオブジェクトで対象の文字列に書式を設定します。Charactersは、第一引数で文字列の開始位置、第二引数で対象の文字数を指定すると、引数で指定した範囲の文字列を操作できます。...
VBAテクニック辞典

【VBA】データがあるセルだけ書式を設定する

データがあるセルだけに書式を設定したい場合は、次の流れで処理を行います。 UsedRangeプロパティでデータがあるセル範囲を取得 取得したセル範囲を1つずつデータが入力されているかチェック データが入力されているセルに書式を設定する1.U...
VBAテクニック辞典

【VBA】表のセルだけ一括で書式を設定する

表エリアの取得方法表の部分だけ一括で書式(太字や色、罫線など)を設定したい場合は、セルのCurrentRegionプロパティで対象エリアを取得します。たとえば、下のような表データがあった時次のコードどの書き方でも、表内のデータがあるセルのC...
VBAテクニック辞典

【VBA】外枠の罫線だけ消す(個別、ループ処理)

セルの外枠の罫線だけを消す時は、上下左右の線を個別に消します。消す方法は、Borders(罫線の種類).LineStyle プロパティの引数で「罫線の種類」を指定し、プロパティの値にxlNoneを設定します。罫線の種類説明定数の値xlEdg...
VBAテクニック辞典

【VBA】罫線をすべて消す(複数セル、行、列指定)

セルの罫線を消す時は、Borders.LineStyle プロパティにxlNoneを設定します。ただし、これでは「斜めの罫線」は消えません。なので斜め線は個別に消します。右下がりの斜め線を消す:Borders(xlDiagonalDown)...
VBAテクニック辞典

【VBA】文字の縦方向の配置を変更する(複数セル、行、列指定)

文字の縦位置(垂直方向)を変更する時は、VerticalAlignment プロパティに「下詰め」や「中央揃え」を定数で設定します。VerticalAlignmentに設定できる定数一覧定数名設定される文字の縦位置xlTop上詰めxlCen...
VBAテクニック辞典

【VBA】文字の横方向の配置を変更する(複数セル、行、列指定)

文字の横位置(水平方向)を変更する時は、HorizontalAlignment プロパティに「右揃え」や「中央揃え」を定数で設定します。HorizontalAlignmentに設定できる定数一覧定数名設定される文字の横位置xlGeneral...
VBAテクニック辞典

【VBA】文字を「縮小して全体を表示する」に変更する(複数セル、行、列指定)

文字を「縮小して全体を表示する」に設定する時は、ShrinkToFit プロパティにTrueを設定します。解除したい場合は、Falseを設定します。ShrinkToFitプロパティにTrueを設定しても、「縮小して全体を表示する」に変更でき...
VBAテクニック辞典

【VBA】文字を「折り返して全体を表示する」に変更する(複数セル、行、列指定)

文字を「折り返して全体を表示する」に設定する時は、WrapText プロパティにTrueを設定します。解除したい場合は、Falseを設定します。セル(1セル、複数セル、全てのセル)を「折り返して全体を表示する」に設定する1セルの時Range...
VBAテクニック辞典

【VBA】文字に取り消し線を設定する(複数セル、行、列指定)

文字に取り消し線を設定する時は、Font.Strikethrough プロパティにTrueを設定します。解除したい場合は、Falseを設定します。セル(1セル、複数セル、全てのセル)に取り消し線を設定する1セルの時Range("セル番地")...
VBAテクニック辞典

【VBA】文字に下線を設定する(複数セル、行、列指定)

文字に下線を設定する時は、Font.Underline プロパティに下線の種類を指定します。下線の種類には次の定数があるので、この中から引きたい下線を選べばOKです。定数下線のタイプxlUnderlineStyleNone下線なしxlUnd...
VBAテクニック辞典

【VBA】文字のフォントサイズを変更する(複数セル、行、列指定)

文字のフォントサイズを変更(設定)する時は、Font.Size プロパティでフォントサイズを指定します。セル(1セル、複数セル、全てのセル)のフォントサイズを変更する1セルの時Range("セル番地").Font.Size = フォントサイ...
VBAテクニック辞典

【VBA】文字のフォントを変更する(複数セル、行、列指定)

文字のフォントを変更(設定)する時は、Font.Name プロパティでフォント名を指定します。プログラムを書く時にフォント名を手打ちで入力すると、スペースの入力漏れや、入力ミスで正しくフォントが設定されないことがあります。なので、エクセルの...
VBAテクニック辞典

【VBA】文字を太字、斜体にする(複数セル、行、列指定)

文字を太字にする時はFont.BoldプロパティにTrueを設定、文字を斜体にする時はFont.ItalicプロパティにTrueを設定します。この2つのプロパティ(Font.BoldとFont.Italic)は独立したプロパティなので、両方...
VBAテクニック辞典

【VBA】書式をクリアする(複数セル、行、列指定)

セルの色や背景色、太字など書式すべてをクリアする時は、ClearFormatsメソッドを使います。セル(1セル、複数セル、全てのセル)の書式をクリアする1セルの時Range("セル番地").ClearFormatsCells(行番号,列番号...
VBAテクニック辞典

【VBA】背景色をクリアする(複数セル、行、列指定)

背景色をクリアする(塗りつぶしなしにする)時は、Interior.ColorIndexプロパティにxlNoneを設定します。Interior.ColorにRGB(255, 255, 255)を設定する方法は、背景色に白を設定することになるの...
VBAテクニック辞典

【VBA】文字色をクリアする(複数セル、行、列指定)

文字色をクリアする時は、Font.ColorIndexプロパティ、Font.Colorプロパティを使った2つの方法があります。この2つの方法は少し意味がちがいます。Font.ColorIndexプロパティは「標準の色に戻す」、Font.Co...
VBAテクニック辞典

【VBA】文字色を変更する(複数セル、行、列指定)

文字色を変更(設定)する時は、Font.Color プロパティで色を指定します。この時、色の種類はVBAにすでに準備されている定数、またはRGB関数を使って設定できます。文字色で使える色の定数やRGB値は、VBAカラー一覧(組み込み定数、R...
VBAテクニック辞典

【VBA】背景色を変更する(複数セル、行、列指定)

背景色を変更(設定)する時は、Interior.Color プロパティで色を指定します。この時、色の種類はVBAにすでに準備されている定数、またはRGB関数を使って設定できます。背景色で使える色の定数やRGB値は、VBAカラー一覧(組み込み...
VBAテクニック辞典

【VBA】特定文字を含む行をすべて削除する

特定文字を含む行をすべて削除する方法は、「InStr関数で調べ削除する方法」と「Findメソッドで対象セルを取得し削除する方法」があります。どちらも1件ずつ処理をするのは変わらないですが、複雑な条件の場合は「InStr関数で調べ削除する方法...
VBAテクニック辞典

【VBA】特定文字を含む列をすべて削除する

特定文字を含む列をすべて削除する方法は、「InStr関数で調べ削除する方法」と「Findメソッドで対象セルを取得し削除する方法」があります。どちらも1件ずつ処理をするのは変わらないですが、複雑な条件の場合は「InStr関数で調べ削除する方法...
VBAテクニック辞典

【VBA】空白セルがある行をすべて削除する

空白セルがある行をすべて削除する方法は、「ループ処理で1行ずつチェックしながら削除する方法」と、「SpecialCellsメソッドで空白セルを取得し、一括削除する方法」があります。複雑なロジックも行いたい場合は「ループ処理で1行ずつチェック...
VBAテクニック辞典

【VBA】空白セルがある列をすべて削除する

空白セルがある列をすべて削除する方法は、「ループ処理で1列ずつチェックしながら削除する方法」と、「SpecialCellsメソッドで空白セルを取得し、一括削除する方法」があります。複雑なロジックも行いたい場合は「ループ処理で1列ずつチェック...
VBAテクニック辞典

【VBA】別ブック、別シートの行を削除する

別ブックを指定する時はWorkbooks、別シートを指定する時はWorksheetsを使って行を削除します。サンプルコードでは、Rowsを使って行削除を行っています。RangeやEntireRowを使った行削除を行いたい場合は、次の記事を参...
VBAテクニック辞典

【VBA】複数シートの行を削除する

複数シートの行を削除するする時は、For Each(繰り返し処理)で各シートを1つずつ移動しながら、行の削除を行います。サンプルコードでは、Rowsを使って行削除を行っています。RangeやEntireRowを使った行削除を行いたい場合は、...
VBAテクニック辞典

【VBA】行削除を高速化する方法

描画を停止し、まとめて行削除をする大量の行を削除する場合、処理時間が遅いことがあります。その場合は、「描画の停止」と「行をまとめて削除する」ことで高速化が可能です。行削除で時間がかかる1番の理由は、1つずつ行を削除する処理だからです。一般的...
VBAテクニック辞典

【VBA】条件に一致する行をまとめて削除する

ループ処理で、1番下の行から1行ずつ判定し削除する条件に一致する行だけを削除したい時は、ループ処理で1行ずつ判定し削除しますこの時の大事なポイントは、先頭の行からではなく、最後の行から順番に処理をすることです。先頭行から行削除がダメな理由先...
VBAテクニック辞典

【VBA】列削除を高速化する方法

描画を停止し、まとめて列削除をする大量の列を削除する場合、処理時間が遅いことがあります。その場合は、「描画の停止」と「列をまとめて削除する」ことで高速化が可能です。列削除で時間がかかる1番の理由は、1つずつ列を削除する処理だからです。一般的...
VBAテクニック辞典

【VBA】別ブック、別シートの列を削除する

別ブックを指定する時はWorkbooks、別シートを指定する時はWorksheetsを使って列を削除します。サンプルコードでは、Columnsを使って列削除を行っています。RangeやEntireColumnを使った列削除を行いたい場合は、...
VBAテクニック辞典

【VBA】複数シートの列を削除する

複数シートの列を削除するする時は、For Each(繰り返し処理)で各シートを1つずつ移動しながら、列の削除を行います。サンプルコードでは、Columnsを使って列削除を行っています。RangeやEntireColumnを使った列削除を行い...
VBAテクニック辞典

【VBA】条件に一致する列をまとめて削除する

ループ処理で、右側の列から1列ずつ判定し削除する条件に一致する列だけを削除したい時は、ループ処理で1列ずつ判定し削除しますこの時の大事なポイントは、先頭の列からではなく、最後の列から順番に処理をすることです。先頭列から列削除がダメな理由先頭...
VBAエラー原因・解決方法

実行時エラー6「オーバーフローしました。」の原因・解決方法

エラー内容VBA実行時に、実行時エラー6「オーバーフローしました。」と表示される。原因と解決方法3つの原因と、その解決方法が考えられます。原因1. 変数に大きすぎる値を格納解説VBAの型にはそれぞれ、格納できる値の範囲があります。例えばIn...
VBAエラー原因・解決方法

実行時エラー5「プロシージャの呼び出し、または引数が不正です。」の原因・解決方法

エラー内容VBA実行時に、実行時エラー5「プロシージャの呼び出し、または引数が不正です。」と表示される。原因と解決方法1つの原因と、その解決方法が考えられます。原因1. 関数の引数が範囲外解説関数の引数には、「数値」という条件以外に「0以上...
VBAエラー原因・解決方法

実行時エラー3「Return に対応する GoSub がありません」の原因・解決方法

エラー内容VBA実行時に、実行時エラー3「Return に対応する GoSub がありません」と表示される。原因と解決方法2つの原因と、その解決方法が考えられます。原因1. Returnから戻るGoSubがない解説Returnステートメント...
VBAエラー原因・解決方法

「同じ適用範囲内で宣言が重複しています。」の原因・解決方法

エラー内容VBAコンパイル時に、「同じ適用範囲内で宣言が重複しています。」と表示される。原因と解決方法1つの原因と、その解決方法が考えられます。原因1. 同じ名前の変数や定数が定義されている解説同じプロシージャ(subやfunction)内...
VBAエラー原因・解決方法

「名前が適切ではありません:」の原因・解決方法

エラー内容VBAコンパイル時に、「名前が適切ではありません:」と表示される。原因と解決方法2つの原因と、その解決方法が考えられます。原因1. 同じ名前の変数や定数を定義している解説モジュールレベルで、同じ名前の変数や定数を定義しているのが原...
VBAエラー原因・解決方法

「引数は省略できません。」の原因・解決方法

エラー内容VBAコンパイル時に、「引数は省略できません。」と表示される。原因と解決方法3つの原因と、その解決方法が考えられます。原因1. 引数の数が足りない解説プロシージャに渡す引数が足りていないのが原因です。解決方法必要な引数を追加します...
VBAエラー原因・解決方法

「引数の数が一致していません。または不正なプロパティを指定しています。」の原因・解決方法

エラー内容VBAコンパイル時に、「引数の数が一致していません。または不正なプロパティを指定しています。」と表示される。原因と解決方法2つの原因と、その解決方法が考えられます。原因1. 引数の数が多すぎる解説プロシージャの引数が多すぎるのが原...
VBAエラー原因・解決方法

「名前付き引数が見つかりません。」の原因・解決方法

エラー内容VBAコンパイル時に、「名前付き引数が見つかりません。」と表示される。原因と解決方法2つの原因と、その解決方法が考えられます。原因1. スペルが間違っている解説プロシージャの名前付き引数のスペルが間違っている、これが1番の原因です...
VBAエラー原因・解決方法

「プロパティの使い方が不正です。」の原因・解決方法

エラー内容VBAコンパイル時に、「プロパティの使い方が不正です。」と表示される。原因と解決方法4つの原因と、その解決方法が考えられます。原因1. = がない解説プロパティに値をセットする時に、=がない事が原因です。サンプルソースでは、Ran...
VBAエラー原因・解決方法

「値の取得のみ可能なプロパティに値を設定することはできません。」の原因・解決方法

エラー内容VBAコンパイル時に、「値の取得のみ可能なプロパティに値を設定することはできません。」と表示される。原因と解決方法1つの原因と、その解決方法が考えられます。原因1.読み取り専用のプロパティに値をセット解説読み取り専用のプロパティに...
VBAテクニック辞典

【VBA】行を挿入(追加)する

VBAで行を挿入(追加)する時は、Insertメソッドを使用します。挿入位置の指定方法は、RowsやEntireRowなどがあるので、それぞれ紹介しています。でも特に理由がない場合は、わかりやすいRowsによる指定をしましょう。1行挿入する...
VBAエラー原因・解決方法

「For Each に指定する変数はバリアント型変数またはオブジェクト型でなければなりません。」の原因・解決方法

エラー内容VBAコンパイル時に、「For Each に指定する変数はバリアント型変数またはオブジェクト型でなければなりません。」と表示される。原因と解決方法1つの原因と、その解決方法が考えられます。原因1. 制御変数の型がコレクションに対応...
VBAエラー原因・解決方法

「メソッドまたはデータ メンバが見つかりません。」の原因・解決方法

エラー内容VBAコンパイル時に、「メソッドまたはデータ メンバが見つかりません。」と表示される。原因と解決方法3つの原因と、その解決方法が考えられます。原因1. 列挙型やユーザー定義型で、存在しないメンバーを指定解説列挙型(Enum)やユー...
VBAエラー原因・解決方法

「ユーザー定義型は定義されていません。」の原因・解決方法

エラー内容VBAコンパイル時に、「ユーザー定義型は定義されていません。」と表示される。原因と解決方法3つの原因と、その解決方法が考えられます。原因1.型指定のスペルが間違っている解説変数宣言する時に、型指定のスペルが間違っているのが原因です...
VBAエラー原因・解決方法

「定数には値を代入できません。」の原因・解決方法

エラー内容VBAコンパイル時に、「定数には値を代入できません。」と表示される。原因と解決方法2つの原因と、その解決方法が考えられます。原因1.定数として定義している解説Constを使って定数として定義した変数に、コードの途中で新しい値を代入...
VBAエラー原因・解決方法

「識別子が長すぎます。」の原因・解決方法

エラー内容VBAコンパイル時に、「識別子が長すぎます。」と表示される。識別子とは、変数、定数、引数、プロシージャなどの名前のことです。原因と解決方法1つの原因と、その解決方法が考えられます。原因1. 名前が長すぎる解説識別子(変数やプロシー...
VBAエラー原因・解決方法

「オブジェクトが必要です。」の原因・解決方法

エラー内容VBAコンパイル時に、「オブジェクトが必要です。」と表示される。原因と解決方法次の原因と解決方法が考えられます。原因1. オブジェクト変数でないのに、オブジェクトを格納している解説Long型やString型などの普通の変数に、Wo...
VBA開発ルール

VBAのコーディングルール

プログラムの基本的な書き方・作法についてまとめています。「今まで我流だったけど、キレイで効率的なプログラムを書きたい」という人は、ぜひ参考に!VBAのオブジェクトや変数の命名規則については、別記事:VBAの命名規則で紹介しています。基本的な...
VBA開発ルール

VBAの命名規則

VBAのオブジェクトや変数の命名規則をまとまています。プログラムの基本的な書き方・作法については、別記事:VBAのコーディングルールで紹介しています。基本の命名規則英語、またはローマ字で命名する英語、またはローマ字表記のアルファベットで命名...
VBAエラー原因・解決方法

【VBAエラー】「参照が不正または不完全です。」の原因・解決方法

エラー内容VBAコンパイル時に、「参照が不正または不完全です。」と表示される。原因と解決方法3つの原因と解決方法が考えられます。原因1. オブジェクトの指定がない解説オブジェクト(セルやシート)の指定がなくて、「何について処理をしたい」かわ...
VBAエラー原因・解決方法

【VBAエラー】「修正候補: 式」の原因・解決方法

エラー内容VBAコンパイル時に、「修正候補: 式」と表示される。原因と解決方法プログラムの記述が途中で切れていたり、記述もれがある時に表示されるメッセージです。プログラムを書いてる途中で、Enter押したり、違う行に移動しても表示されます。...
VBAエラー原因・解決方法

【VBAエラー】「修正候補: 識別子」の原因・解決方法

エラー内容VBAコンパイル時に、「修正候補: 識別子」と表示される。原因と解決方法識別子とは、変数や定数、関数の名前のことです。VBAでは名前を付けるルールがあり、このルールに反した名前を付けようとするとこのエラーが発生します。3つの原因と...
VBAエラー原因・解決方法

【VBAエラー】「修正候補: ステートメントの最後」の原因・解決方法

エラー内容VBAコンパイル時に、「ステートメントの最後」と表示される。原因と解決方法「ステートメントの最後」とありますが、実際には文法・記述ミスが原因でよく起こります。なので原因はいくつもありますが、6つの原因と解決方法をピックアップします...
VBAエラー原因・解決方法

【VBAエラー】「修正候補: 区切り記号 または)」の原因・解決方法

エラー内容VBAコンパイル時に、「修正候補: 区切り記号 または)」と表示される。原因と解決方法4つの原因と解決方法が考えられます。原因1. )が足りない解説右カッコ(閉じるカッコ)が足りないことが原因です。サンプルソースでは、Msgbox...
VBAテクニック辞典

【VBA】連続したセルと離れたセルを同時に選択する

Rangeを使ってセルを選択「連続したセルを選択する」、「離れたセルを選択する」の内容を合わせた方法です。連続したセルはコロン、離れたセルはカンマ区切りで記述します。セル指定後に、Selectメソッドで選択状態にします。コード解説今回はB2...
VBAテクニック辞典

【VBA】離れたセルを選択する

Rangeを使ってセルを選択Rangeプロパティで選択するセルを、カンマ区切りで指定します。この時、引数全体をダブルクォーテーションで囲みます。対象セルを指定したら、Selectメソッドで選択状態にします。コード解説セルB2、D2、B4が選...
VBAテクニック辞典

【VBA】連続したセルを選択する

VBAでセルを選択状態にする時は、Selectメソッドを使用します。対象セルの指定方法は、「Rangeによる方法」と、「RangeとCellsを組み合わせた方法」の2つがあります。サンプルコードでは、セルB2~F4を選択状態にします。Ran...
VBAテクニック辞典

【VBA】複数のシートを同時にまとめてコピーする

複数のワークシートを同時にコピーする方法を、3つ紹介します。目的や状況に応じて、使いやすい方法を選んでください。シート名を配列で指定してコピーWorksheets(Array("○○","○○")).Copyと書き、○○の部分に「シート名」...
VBAテクニック辞典

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

Before/Afterでファイル名を指定しコピー最初にコピー先のエクセルファイルを開きます。Copyメソッドでシートをコピーする時に、Before/AfterでWorkbooks("○○.xlsx").Worksheets("■■")とい...