• ベストアンサー

最終行から指定行までの削除

VBAで、表のB列の最終行からB列の91行目までの行削除するマクロを作りたいのですが、うまくいきません。

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

  • ベストアンサー
  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.4

 補足を見ましたが、やはりよくわかりません。 >12行目から30行目までしかデーターを入力しなければ、31行目から91行目までの行を削除したい ということですが、この場合、最初の質問の「B列の最終行からB列の91行目まで」の「最終行」とはどの行のことでしょうか。「データの最終」という意味なら、30行目が最終行になりますが、30行目を削除するのはまずいですね。  データが何行目まで入力されているかを調べ、最終行の次の行から91行目までを削除するなら、 Sub test() Dim REnd As Integer REnd = Range("B12").End(xlDown).Row + 1 Range(Cells(REnd, 2), Cells(91, 2)).EntireRow.Delete End Sub みたいなことでしょうか。  試すときは、当然ですが、バックアップを取って試してください。

その他の回答 (3)

  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.3

 #2です。  質問をよく読むと、「行削除」とありました。  B列の最終行が 500行だとすると、行ないたいことは、B91:B500 のセル範囲だけを削除するのではなく、91行目から500行目までを削除したい、ということでしょうか。  先の回答は、セル範囲だけを削除するものです。

seikasan
質問者

補足

B列の12行目から91行目にかけてデーターを入力し92行目に合計が出るような表を作っています。 例えば、12行目から30行目までしかデーターを入力しなければ、31行目から91行目までの行を削除したいのですが。 すいません説明が不足していました。

  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.2

 どううまくいかないのかがわかりませんが、 Sub test() Dim REnd As Long REnd = Range("B65536").End(xlUp).Row Range(Cells(91, 2), Cells(REnd, 2)).Delete Shift:=xlUp End Sub みたいなのではだめですか。 削除したあと、左へシフトなら .Delete Shift:=xlUp のところを .Delete Shift:=xlToLeft とします。 あるいは、「削除」というのがデータ消去のことであれば、 .Delete Shift:=xlUp のところを .ClearContents とします。

noname#131542
noname#131542
回答No.1

Range("b1:b2").Delete でなくて?これならb列だけの削除になりますが・・・。  例えば 111  222  333 111  222  333 111  222  333 111  222  333  というシートあったとすると 111  333 111  333 111  222  333 111  222  333 に変りますがこういうことでしょうか?

関連するQ&A