アプリ版:「スタンプのみでお礼する」機能のリリースについて

excelマクロ(VBA)について質問です。マクロにて指定したセルを挿入・削除したいのですが、挿入・削除するセルの場所ついては、別のセルで指定したいのです。具体的には以下のような感じです。
A   B   C   D 
1  □
2  □
3 氏名
4  No   太郎
5  1   次郎
6 2   三郎
7 3   四郎
8 4   トメ
9  5   ハジメ
A1にて挿入する場所を、B1にて削除する場所を指定したいです。例えば四郎の後ろにセルを挿入してトメの上に五郎と入れたい場合A1にて(挿入したいNo)4を指定・実行するとトメがNo5(B9セル)にずれるといった具合です。削除の場合もB1で4を指定するとトメが削除され、No4(B8)にハジメが上がるという感じです。よろしくお願いします。

A 回答 (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をセット。
    • good
    • 0
この回答へのお礼

ありがとうございました!
悩みが解決しました。とても助かりました!

お礼日時:2011/03/12 21:19

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"
    • good
    • 0

削除(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
    • good
    • 0
この回答へのお礼

ありがとうございます。

一点、質問に対して補足させてください。
挿入・削除どちらをしてもA列のNoは変更しないようにしたいのです。
つまり、A1にて(挿入したいNo)4を指定・実行すると
四郎の後ろにセル(B8とC8)が挿入されますが、A列には変化がないといった具合です。
削除の場合も同様で、A1にて(削除したいNo)4を指定・実行すると
A列はそのままで、削除されるのはB8とC8セルということです。
質問が雑でわかりにくく恐縮ですが何とぞ、よろしくお願いいたします。

お礼日時:2011/03/12 15:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!