• 締切済み

行を削除しないで、データーのみ消去、さらに上にデーターを詰める

おはようございます。 よろしくお願いします。 シートに表を作っているのですが、行を削除して表の 行数を変えたくないので、行を削除しないで、データーのみ消去 さらにその下のデーターを上に詰める。  行には、2行分の結合セルが混ざっています。  2行づつ消去する。  下のデーターも同じ書式ですので2行づつ上に詰める。 下の構文では、1行のみ削除して下のデーターを上に 詰めることになります。 上の条件にするにはどうしたら、よいのでしょうか。  Dim DstRow As Long  Dim LastRow As Long  Dim Ms As Long Ms = MsgBox(prompt:=あああ.Caption &_ "を消去してよろしいですか?", Buttons:=vbYesNo) If Ms = vbYes Then Rows(DstRow).Delete DstRow = DstRow - 1 LastRow = LastRow - 1 End If

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

シートの構成にもよりますが、ご質問文から察するに行範囲をコピペで1行ずらしてあげればできそうですね。 最終行がどこなのか不明ですが、多分LastRowだろうと仮定しました。 ・コピペなので書式などもコピーされますし、式が入っている場合  相対参照などはそのまま参照位置がずれます ・ずらした後の最終行をクリアしていますが、書式ごとクリアする場合は  Clearを使用してください。 Set rw = Rows(DstRow).Resize(LastRow - DstRow, 1).EntireRow rw.Offset(1).Copy (rw) Rows(LastRow).ClearContents 手動でコピペできないようなセル構成(結合などで)の場合はエラーになります

1211M
質問者

補足

fujillinさん 回答ありがとうございます。 手動でコピペできないようなセル構成(結合などで)の場合はエラーになりますとありますが 結合セル(2行にまたがっている場合)が混在する場合は どのようにすればよいのでしょうか。 Set rw = Rows(DstRow).Resize(LastRow - DstRow, 1).EntireRow rw.Offset(1).Copy (rw) Rows(LastRow).ClearContents 実行するとオブジェクトエラーと表示されます。

関連するQ&A