Excel VBAマクロ:タイトル名で列選択

Excelマクロで列選択を列番号でしていると、新しい行が間に挿入されるなどで列がずれると処理が正しく行われなくなり、マクロのその部分を書き換えなければなりません。

1行目などがタイトル行になっていて、タイル文字列がある場合、タイトル文字列で列を指定するようにしておくと列がずれても修正しなくて良くなります。
ということで、タイトル文字列で列選択するマクロです。

'タイトル行(1行目)で文字列マッチする列を選択
Sub ColumnSelectByTitle(title As String)
    Dim titleRow As Integer
    titleRow = 1   ' タイトル行番号
    
    Dim i As Integer
    For i = 1 To EndColumn()
        If Cells(titleRow, i).Text() = title Then
            Columns(i).Select
            Exit Sub      ' 正常終了
        End If
    Next
    
   'エラー終了
    Err.Description = "タイトル行に指定文字列( " + title + " ) が見つかりませんでした"
    Err.Raise (60000)
    MsgBox (Err.Description)
End Sub

テスト用のシートの内容

上記を”名前”列で選択したい場合

Sub testOk()
    ColumnSelectByTitle ("名前")
End Sub

結果

マッチするタイトル名が無い場合、Excelをエラー終了させるようにしています。

Sub testNg()
    ColumnSelectByTitle ("あああ")
End Sub

コメント

タイトルとURLをコピーしました