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テクニック辞典

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

VBAで行を挿入(追加)する時は、Insertメソッドを使用します。挿入位置の指定方法は、RowsやEntireRowなどがあるので、それぞれ紹介しています。でも特に理由がない場合は、わかりやすいRowsによる指定をしましょう。1行挿入する...
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("■■")とい...
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】列を削除する(1列だけ、連続した複数列、離れた複数列)

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

【VBA】行を削除する

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

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

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

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

ループ処理でFont.Colorを調べるループ処理で、Font.Color(文字色)を調べてカウントしています。調べるセル範囲と、カウント対象の文字色を指定すると、対象のセル件数を返す関数です。コード引数の説明searchArea検索対象と...
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メソッドで名前を付けて保存しています。保存する...