プロが教える店舗&オフィスのセキュリティ対策術

おはようございます。
よろしくお願いします。

シートに表を作っているのですが、行を削除して表の
行数を変えたくないので、行を削除しないで、データーのみ消去
さらにその下のデーターを上に詰める。

 行には、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

A 回答 (1件)

シートの構成にもよりますが、ご質問文から察するに行範囲をコピペで1行ずらしてあげればできそうですね。



最終行がどこなのか不明ですが、多分LastRowだろうと仮定しました。
・コピペなので書式などもコピーされますし、式が入っている場合
 相対参照などはそのまま参照位置がずれます
・ずらした後の最終行をクリアしていますが、書式ごとクリアする場合は
 Clearを使用してください。

Set rw = Rows(DstRow).Resize(LastRow - DstRow, 1).EntireRow
rw.Offset(1).Copy (rw)
Rows(LastRow).ClearContents

手動でコピペできないようなセル構成(結合などで)の場合はエラーになります

この回答への補足

fujillinさん 回答ありがとうございます。

手動でコピペできないようなセル構成(結合などで)の場合はエラーになりますとありますが
結合セル(2行にまたがっている場合)が混在する場合は
どのようにすればよいのでしょうか。

Set rw = Rows(DstRow).Resize(LastRow - DstRow, 1).EntireRow
rw.Offset(1).Copy (rw)
Rows(LastRow).ClearContents

実行するとオブジェクトエラーと表示されます。

補足日時:2009/07/11 11:41
    • good
    • 0

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