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
コメント