Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【VBAスタンダードに挑戦!】検索結果の操作(Copy/Delete/Offset)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

本日の5分勉強の内容

 

 

********************************************************

Find で指定のデータが見つかった後にできる操作の一例です。

 f:id:tuna-kichi:20200814132053p:plain

Copy

Dim r As Long  

 'ID の列から "R" を探して行番号を取得する
 r = Columns(1).Find(What:="R").Row 

 'その行の 列A ~ C をコピーして、セルE2にコピーする
 Range(Cells(r, 1), Cells(r, 3)).Copy Range("E2")

                      

Delete

'ID の列から "R" を探して行全体を削除する
Columns(1).Find(What:="R").EntireRow.Delete

 

 

                      

Offset

'ID の列から "R" を探して、その右となりのセルの値を表示する

MsgBox Columns(1).Find(what:="R").Offset(0, 1)

 

 f:id:tuna-kichi:20200814134435p:plain

                      

私が過去に使った方法

Dim FirstRow As Long
Dim i As Long

 FirstRow = Columns(1).Find("ID").Offset(1).Row
 LastR = Cells(Rows.Count, 1).End(xlUp).Row

 For i = FirstRow To LastR

  処理

 Next i

 

テンプレートを使って複数のシートが作成され、

どのシートでも同じ表がありました。

 

項目名と項目名が記載されている列番号は変わらないのですが、

シートによって行の位置が違いました。

 

表の中身だけ操作したかったので、項目名を探して

その下の行を先頭行と定義して、ループに設定しました。

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/