- ベストアンサー
Excel VBAでセルの挿入・削除方法
- Excel VBAを使用して、指定したセルに挿入や削除を行う方法について質問です。
- 具体的には、別のセルで指定した場所にセルを挿入したり、削除したりしたい場合の方法について知りたいです。
- 例えば、A1セルに挿入したい場所やB1セルに削除したい場所を指定して、実行することでセルの操作を行いたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VBAをどれほど、WEB照会したり、マクロの記録を採って勉強して質問しているのか。 Googleででも「VBA 行削除」「VBA 行挿入」で照会したのか。マクロの記録を採って考えたか。 またA1などの指定が4と指定するのか、「A9」と指定すするのか書くべき。 Sub test04() Rows(Range("A1") + 3).EntireRow.Delete End Sub は全行を削除。 ーー 番号も残すなら(B-F列等を削除して上へつめるなら)。(最初に質問に書くこと) マクロの記録をやってみること。 マクロ記録では Sub Macro4() Range("B8:D8").Select Selection.Delete Shift:=xlUp End Sub それを修正して Sub Macro5() Set sh1 = Worksheets("Sheet1") MsgBox sh1.Range("A1") + 4 sh1.Range("B" & (sh1.Range("A1") + 4) & ":D" & (sh1.Range("A1") + 4)).Select Selection.Delete Shift:=xlUp End Sub ーー Sub Macro6() Range("B" & (Range("A1") + 4) & ":D" & (Range("A1") + 4)).Select Selection.Delete Shift:=xlUp End Sub でも良いようだ。 最終行の番号は残したまま。消すなら消せるが。 ーーー 行挿入 マクロの記録では Sub Macro7() Selection.Insert Shift:=xlDown End Sub 範囲を指定して Sub Macro7() Range("B" & (Range("A1") + 4) & ":D" & (Range("A1") + 4)).Select Selection.Insert Shift:=xlDown End Sub 最終行の番号を付け加えるなら、最終行に次の行に(やり方がわからなければ、Googleで「エクセルVBA 最終行 取得」で照会のこと)、A列最大番号+1をセット。
その他の回答 (2)
- kmetu
- ベストアンサー率41% (562/1346)
A5が1になるのでしたら A5に =ROW()-4 として以下必要なだけ下にフィルしてください。 ROW()は行番号を返しますのでご自身の環境に合わせてマイナスの数値を変更してください。 削除はコードの変更は必要ありません 挿入は以下のように変更してください Set c = Range("A4:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Range("A1").Value, LookIn:=xlValues) mRow = c.Row Rows(mRow).Insert Shift:=xlDown Range("A" & mRow).Formula = "=ROW()-4"
- kmetu
- ベストアンサー率41% (562/1346)
削除(B1に指定) Set c = Range("A4:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Range("B1").Value, LookIn:=xlValues) mRow = c.Row Rows(mRow).Delete Shift:=xlUp 挿入(A1に指定) Set c = Range("A4:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Range("A1").Value, LookIn:=xlValues) mRow = c.Row Rows(mRow).Insert Shift:=xlDown
お礼
ありがとうございます。 一点、質問に対して補足させてください。 挿入・削除どちらをしてもA列のNoは変更しないようにしたいのです。 つまり、A1にて(挿入したいNo)4を指定・実行すると 四郎の後ろにセル(B8とC8)が挿入されますが、A列には変化がないといった具合です。 削除の場合も同様で、A1にて(削除したいNo)4を指定・実行すると A列はそのままで、削除されるのはB8とC8セルということです。 質問が雑でわかりにくく恐縮ですが何とぞ、よろしくお願いいたします。
お礼
ありがとうございました! 悩みが解決しました。とても助かりました!