• ベストアンサー

Excel VBA 空白セル以下のデータを繰り上げるには?

Excel2003で、従業員データを管理する表を作成してます。 B列~AC列まで、1行づつ個人のデータがあります。 例えば、4(任意)行目の人が退社した場合、4(任意)行目のデータのみデータクリア(B4~AC4)するVBAを組みましたが、自動的に5行目~のデータを繰り上げるのは可能でしょうか。 A列やAD列以降に管理番号などが入力されている(そのままにする)のと このシートを他のシートが参照しているので Rows.Delete で行ごと削除して繰り上げるわけにいかず悩んでます。   A   B   C   D・・ AC   AD  AF・・ 1 業者(1) 氏名 住所 TEL 入社年 部署 担当 2 001   阿部 東京 03- 2000  営業 A社 3 002   和田 千葉 04- 1990  営業 A社 4 003   佐藤 秋田 01- 1995  営業 B社 5 004   前田 富山 07- 1998  営業 B社 6 005   今井 新潟 02- 1985  財務 財務 7 006   青柳 東京 03- 1980  財務 財務 8 007   鈴木 千葉 01- 1990  工事 工事  ・  ・ 20 業者(2) 氏名 住所 TEL  入社年 部署 担当 21 001   内藤 東京 03- 2000  営業 A社  ・  ・  こういった表です。よい案がありましたら、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • moon00
  • ベストアンサー率44% (315/712)
回答No.2

データクリアのVBAがどんなものか分からないので、 参考程度に。 Sub kuriage() Dim RN As Integer Dim i As Integer Dim j As Integer Dim LR As Integer i = InputBox("削除する行番号を入力してください", "行番号指定") Debug.Print i Range(Cells(i, 2), Cells(i, 4)).Clear Application.ScreenUpdating = False '画面を更新しない LR = Range("b65536").End(xlUp).Row 'データ最終行を取得 For j = i To LR '削除した行からデータ最終行まで繰り返す Range(Cells(j, 2), Cells(j, 4)).Value = Range(Cells(j + 1, 2), Cells(j + 1, 4)).Value '1つ上の行にデータを移動 Next Application.ScreenUpdating = True '画面を更新する End Sub 範囲は適宜変更してください。 サンプルはB列からD列までのデータを繰り上げです。

starsip
質問者

お礼

ご回答有難う御座います。 ご回答を参考に組み直しましたら、希望どおりの動作が出来ました。 有難う御座いました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >A列やAD列以降に管理番号などが入力されている(そのままにする) 管理番号は、下の行の人へ繰り上げになるのですか? EntireRow で削除できないなら、範囲を選択して、削除(.Delete)すればよいと思います。

starsip
質問者

お礼

早速のご回答有難う御座います。 検討してみます。

関連するQ&A

専門家に質問してみよう