[[20140506173632]] 『VBAで セルの範囲指定(変数)をして削除』(nana san) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで セルの範囲指定(変数)をして削除』(nana san)

1行目がタイトル行で、AからG列まで入力されたデータがあります。
データは変数とし、E2から最終行(数値が入力されたセル)まで範囲を指定し
削除し左側へシフトしたいのですが、以下のマクロ構文だと他のsheet上で
マクロを実行すると「実行時エラー1004 RangeクラスのSelectメソッドが失敗しました」
とメッセージが表示されます。
対処方法を教えてください。よろしくお願いします。

Sheets("data2").Range("E2:E65536").Select

    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft

<データ>

      A      B      C      D       E        F      F
1    No.   data1 data2  data3   data4   data5   data6   ← タイトル
2    234   23.4   22     34       12     25      21     ← 数値データ(以下同様)
:
:
:

< 使用 Excel:Excel2003、使用 OS:Windows7 >


 参考HPです。

 Office TANAKA - VBA高速化テクニック(Selectするな!)
http://officetanaka.net/excel/vba/speed/s2.htm
(カリーニン) 2014/05/06(火) 18:09

  そのまま書くとこんな感じです。

  Sheets("data2").Select
  Range("E2:E65536").Select 
  Selection.Delete Shift:=xlToLeft

 要約するとこういうことになります。

  Sheets("data2").Range("E2:E65536").Delete Shift:=xlToLeft

  または

  Sheets("data2").Range("E2:E" & Cells.Rows.Count).Delete Shift:=xlToLeft

(カリーニン) 2014/05/06(火) 18:17


 ちょっと質問の意図を読み間違えていました。

  Sheets("data2").Range(Sheets("data2").Range("E2") ,Sheets("data2").Range("E2").End(XlDown)).Delete Shift:=xlToLeft

  場合によっては

  Sheets("data2").Range(Sheets("data2").Range("E2") ,Sheets("data2").Range("E" & Cells.Rows.Count).End(XlUp)).Delete Shift:=xlToLeft
(カリーニン) 2014/05/06(火) 18:24

カリーニンさん
早速ご指導頂きありがとうございました。そのまま書いた
Sheets("data2").Select
  Range("E2:E65536").Select 
  Selection.Delete Shift:=xlToLeft

でうまくいきましたが、最新の

Sheets("data2").Range(Sheets("data2").Range("E2") ,Sheets("data2").Range("E2").End(XlDown)).Delete Shift:=xlToLeft
等はうまくいきませんでした。 なぜかは不明です。

うまくいったほうを使って利用させていただきます。ありがとうございました。
(nana san) 2014/05/07(水) 09:45


 >Sheets("data2").Range(Sheets("data2").Range("E2") ,Sheets("data2").Range("E2").End(XlDown)).Delete Shift:=xlToLeft

 こちらは
 E2が選択されている状態で
 Shift+Ctrl+↓
 で選択される範囲が削除対象になります。

 >Sheets("data2").Range(Sheets("data2").Range("E2") ,Sheets("data2").Range("E" & Cells.Rows.Count).End(XlUp)).Delete Shift:=xlToLeft

 こちらは
 E2から最終行(バージョンによって最終行の行数が違ってきます)を選択している状態でCtrl+↑
 で選択される範囲が削除対象になります。

 E2にデータが入っているか、途中に空白行があるかないか、で選択されるセルが違ってきますので使い分ける必要があります。
(カリーニン) 2014/05/07(水) 10:08

勉強になりました。ありがとうございます。

(nana san) 2014/05/07(水) 17:14


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.