ITのえんぴつ

Google Blockly開発者ツールやIT・プログラミングを研究して発信するブログ

Excel VBAスニペット: フォントを変更(指定)する

Excel VBAを使用してフォントを変更(指定)する方法を解説します。以下がそのVBAコードです。

Sub フォントを変更する()
    Range("A1").Font.Name = "HG創英角ポップ体"
End Sub

このVBAスニペットは、"HG創英角ポップ体"という特定のフォントにテキストを変更する方法を示しています。

使用するフォントはお好みで変更可能です。例えば、"HG創英角ポップ体"の代わりに、"メイリオ"や"Arial"など、他のフォント名に変更することができます。

他のExcel VBAスニペットについてもっと知りたい方は、ぜひ他のページもご覧ください。

eigo-gayomenai-engineer.hatenablog.com

Excel VBAスニペット: 空白セルが何行目にあるのか探して取得する

Excel VBAを使用して、A列にある空白セルが何行目にあるかを探し、その行番号を取得する方法について解説します。

以下がそのVBAコードです。

Sub 空白セルの行番号を取得する()
    ' エラーハンドリングを設定
    On Error GoTo ErrHandl
    
    ' Rangeオブジェクトを宣言
    Dim blankCell As Range
    
    ' A列の空白セルをループで処理
    For Each blankCell In Columns("A").SpecialCells(xlCellTypeBlanks)
        ' 空白セルの行番号をデバッグウィンドウに表示
        Debug.Print blankCell.Row
    Next

    Exit Sub ' 正常終了

ErrHandl:
    ' エラー情報をクリア
    Err.Clear
End Sub

コードを詳しく解説

空白セルが何行目にあるのか探して取得するコードの詳細は以下の通りです。

  1. On Error GoTo ErrHandl 〜 Exit Sub
    • エラーハンドリング(例外処理)を設定しています。
    • このステートメントは、実行時エラーが発生した時に制御を指定の行ラベルに移動させるものです。エラーが発生した場合、ErrHandl ラベルへジャンプします。
  2. Dim 空白セル As Range
    • セルの範囲を指定する Range 型で「空白セル」という変数名を宣言します。
  3. For Each 空白セル In Columns("A").SpecialCells(xlCellTypeBlanks) 〜 Next
    • For Eachは、反復処理するための ループです。
    • 空白セル はループ内で各セルに対する一時的な変数です。
    • Columns("A") でA列を指定します。
    • SpecialCells(xlCellTypeBlanks) は空白セル(空白または空白文字であるセル)を取得します
    • Next は、ループの終了を示すキーワードです。この行に到達すると、次の空白セルに移動し、繰り返し処理が続きます。
  4. Debug.Print 空白セル.Row
    • 空白セルの行番号をデバッグウィンドウに表示します。
  5. Err.Clear
    • エラー情報をクリアします。
    • クリアしないと、エラー情報はそのまま残っています。次のエラーが発生したことを判断できるように、エラー処理の後でクリアするようにします。
    • Err.Clearを実行すると、Errオブジェクトがクリアされエラー情報は消去されます。

On Error GoTo のエラー処理が必要な理由は、A列に空白セルがないとき、「Columns("A").SpecialCells(xlCellTypeBlanks)」で、「'1004': 該当するセルが見つかりません。」という実行時エラーが発生するためです。

このVBAコードを使用することで、A列にある空白セルの行番号を取得することができます。

参考

Excel VBAスニペット:最終行を取得する

Excel VBAを使用して、ワークシート上で最終行を取得する方法についてのスニペットをご紹介します。

Sub 最終行を取得する()
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    MsgBox "A列の最終行は「" & LastRow & "」行目"
End Sub

このサンプルコードでは、A列の最終行を取得し、メッセージボックスで表示しています。

最終行を取得するコード解説

Cells(Rows.Count, 1).End(xlUp).Row

この部分はA列の最終行を取得するためのコードです。各要素を分解してみましょう。

1. Rows.Count

Rows.CountExcelの最大行数である104万8576行目を指します。つまり、Cells(Rows.Count, 1)Cells(1048576, "A")Range("A1048576")と同じく、A列の最終行を指定しています。

💡 以下に、一般的なExcelの各バージョンにおける最大行数を示します。

  • Excel 2003以前: 65,536行
  • Excel 2007以降 (Excel 2007, 2010, 2013, 2016, 2019): 1,048,576行

2. End(xlUp)

End(xlUp)はキーボードの「Ctrl+↑」に相当します。すなわち、指定したセルから上方向に非空のセルを検索し、そのセルを返します。このケースではA列の最下部から上方向に検索しています。

3. Row

最終的に、Rowは検索されたセルの行数を取得します。

この手法を使用すると、サンプルコードを実行することでA列の最終行を取得できます。

まとめ

Excel VBAを使用して最終行を取得する方法は、Cells(Rows.Count, 列番号).End(xlUp).Rowといった形式を使用することで可能です。これらの各要素を分解すると以下の通りです。

  • Rows.Count Excelの最大行数
  • End(xlUp)「Ctrl+↑」
  • Row セルの行数

Excelのテンプレート6:工程別シンプルタスク管理(集計機能付き)

先日の記事でご紹介した「工程別シンプルタスク管理」のExcelテンプレートに、ステータス別の集計機能を追加してみました。

ステータス別の集計を行うためのExcel関数は、以下の通りです。

=COUNTIF(範囲, 検索条件)
=COUNTIF(詳細!$F$5:$F$16, C4)

🔗(閲覧専用)EXCELテンプレートはこちら ダウンロードできます

Excelのテンプレート5:工程別シンプルタスク管理(ガントチャート付き)

先日の記事でご紹介した「工程別シンプルタスク管理」のExcelテンプレートに、ガントチャートを追加してみました。

ガントチャートを作成する方法は、「条件付き書式」や「関数」や「セルを塗りつぶす」といった各機能を利用する方法があります。

Excelを使って実際に使用していく中で、「セルを塗りつぶす」機能が直感的に塗りつぶすことができて便利だと思ったので、まずはこちらをテンプレートをして残すことにしました。

🔗(閲覧専用)EXCELテンプレートはこちら ← ダウンロードできます

Excel VBAスニペット: 特定の文字を含むか判定する

Excel VBAを使用して特定のセルや範囲内に特定の文字列が含まれているかを判定する方法には、Instr関数とLike演算子があります。この記事では、Instr関数の引数も紹介し、それぞれの関数で大文字・半角・カタカナの区別する方法としない方法についても詳しくご紹介します。

1. Instr関数を使う方法

Instr関数は以下のように構成されています。

InStr(検索を開始する位置, 検索対象の文字列, 検索する部分文字列, 比較モード)
  • 検索を開始する位置は、通常は1を指定します。
  • 比較モードは、省略可能です。省略したときは、大文字・半角・カタカナが区別されます。それらを区別しないときは、vbTextCompareを設定します。

Instr関数を使用したサンプルコードは以下の通りです。

Sub Instr関数を使う()
    Dim targetString As String
    targetString = Range("A1").Value

    If InStr(1, targetString, "特定の文字列") > 0 Then
        MsgBox "特定の文字列が含まれています"
    Else
        MsgBox "特定の文字列は含まれていません"
    End If
End Sub

2. Like演算子を使う方法

Like演算子を使用すると、ワイルドカードを含む条件で文字列を比較できます。

Sub Like演算子を使う()
    Dim targetString As String
    targetString = Range("A1").Value

    If targetString Like "*特定の文字列*" Then
        MsgBox "特定の文字列が含まれています"
    Else
        MsgBox "特定の文字列は含まれていません"
    End If
End Sub

Like演算子でも以下のようにOption Compare Textを使うことで、大文字・半角・カタカナの区別を無視できます。

Option Compare Text

Sub Like演算子を使う()
    Dim targetString As String
    targetString = Range("A1").Value

    If targetString Like "*特定の文字列*" Then
        MsgBox "特定の文字列が含まれています"
    Else
        MsgBox "特定の文字列は含まれていません"
    End If
End Sub

まとめ

Instr関数とLike演算子は、Excel VBAにおいて特定の文字列を含むかどうかを判定するための便利な手段です。vbTextCompareOption Compare Textを用いて大文字・半角・カタカナの区別を無視することで、柔軟に文字列の判定を行うことが可能です。

他のExcel VBAスニペットについてもっと知りたい方は、ぜひ他のページもご覧ください。

eigo-gayomenai-engineer.hatenablog.com

参考

Excel VBAスニペット: メッセージボックスを表示する

Excel VBAでは、ユーザーに対してメッセージを表示したり、ボタンやアイコンを含むダイアログボックスを表示したりするために、MsgBox関数が利用されます。この記事では、MsgBox関数の基本的な使い方と、サンプルコードを紹介します。

1. 引数なしでメッセージだけ表示する

最も基本的な使い方は、引数なしでメッセージだけを表示することです。以下のサンプルコードを参照してください。

Sub メッセージボックスを表示する()
    MsgBox "メッセージ"
End Sub

このコードを実行すると、"メッセージ"というメッセージボックスが表示されます。

2. ボタンとアイコンを設定する

MsgBox関数では、表示されるメッセージボックスに対してボタンやアイコンを設定することができます。以下は、ボタンとアイコンを設定したサンプルコードです。

Sub メッセージボックスを表示する()
    MsgBox "ボタンとアイコンを設定したメッセージ", vbExclamation + vbOKOnly
End Sub

このコードでは、vbExclamationを使用してアイコンを警告アイコンに、vbOKOnlyを使用してOKボタンのみ表示するように設定しています。

3. タイトルを設定する

メッセージボックスにタイトルを設定することもできます。以下のサンプルコードを参照してください。

Sub メッセージボックスを表示する()
    MsgBox "タイトルを設定したメッセージ", , "カスタムタイトル"
End Sub

このコードでは、メッセージボックスのメッセージとカスタムタイトルが表示されます。

まとめ

MsgBox関数は、Excel VBAで簡単にメッセージボックスを表示するための便利な関数です。基本的な使い方やボタン、アイコン、タイトルの設定方法を理解することで、ユーザーとの対話を効果的に行うことができます。

他のExcel VBAスニペットについてもっと知りたい方は、ぜひ他のページもご覧ください。

eigo-gayomenai-engineer.hatenablog.com

参考