VBAでMatch関数を使用し列番号を取得する
列挿入や列削除で列番号が変わる可能性がある
Excelのシートでは列を追加したり削除したりすることがあり
以下のようなコードだとその度書き直すことになるので
ThisWorkbook.Worksheets("Sheet1").Cells(LastRow + 1, 1).Value = 10
その度書き直さなくてもいいように
項目行から項目名をMatch関数で検索し、変数に格納します。
Sub MasterDataAdd1()'最終行のひとつ下にデータを追加するコード
Dim NoCol As Long 'Noの列番号を格納する変数
Dim IDCol As Long 'IDの列番号を格納する変数
Dim LastRow As Long '最終行を格納する変数
'列番号を変数に格納する
'Masterはシートオブジェクト名です
NoCol = WorksheetFunction.Match("No", Master.Rows(1), 0) 'Match関数で列数格納
IDCol = WorksheetFunction.Match("ID", Master.Rows(1), 0) 'Match関数で列数格納
LastRow = Master.Cells(Rows.Count, NoCol).End(xlUp).Row '最終行格納
Master.Cells(LastRow + 1, NoCol).Value = 10 '最終行のひとつ下にNo追加
Master.Cells(LastRow + 1, IDCol).Value = "jjj" '最終行のひとつ下にID追加
End Sub
ワタシ流こだわり
列番号を格納する変数は「~Col」
行番号を格納する変数は「~Row」
ちなみに
このままだと項目行の上に行を追加されたり項目名を変更されたらアウトです。
その可能性がある場合はその対策もとる
でもとりあえずむやみな変更をしないように伝えておくのは大事。
Author And Source
この問題について(VBAでMatch関数を使用し列番号を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/KaoTechBlog/items/c6dee6099b79009d1f44著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .