エクセル(VBAプログラム)について質問です。


エクセルのプログラムで指定した行を残し、その下の2つの行を繰り返し削除する処理をしたいと考えています。

プログラムを書ける方おりましたらよろしくお願いいたします。

例)5行目から上記のプログラムを実行するとする。

プログラムを実行すると何行目から処理を始めますか?とメッセージが出てきて指定する行を書く。

指定行に5を入力。OKを押すと

5行目はそのまま残り次の6行目と7行目を削除、その次に8行目が残り、その下の9行目と10行目が削除される。(6,7行目が削除される前の8,9,10行目になります。)以下11行目から同じ処理がされます。

上記の繰り返し削除をするプログラムは可能でしょうか。(メッセージと書いてしまいましたが行数を指定して次々と削除できるのであれば方法はどのような方法でも構いません。)
時間がある方おりましたらよろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/11/15 13:15:49
  • 終了:2008/11/15 17:17:58

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/11/15 14:42:41

ポイント100pt

時間がありましたので、回答します。

どこの行まで実行するかは、A列の最終行としました。

Sub test()
    Dim startRow As Long
    Dim lastRow As Long
    Dim i As Long
    
    Application.ScreenUpdating = False
    
    startRow = Application.InputBox(Prompt:="何行目から処理を始めますか?", Type:=1)
    If startRow = False Then Exit Sub
    If startRow > Rows.Count Then Exit Sub
    
    lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = startRow To lastRow
        ActiveSheet.Rows(i + 1).Delete
        ActiveSheet.Rows(i + 1).Delete
        lastRow = lastRow - 2
    Next
    
    Application.ScreenUpdating = True
End Sub

http://q.hatena.ne.jp/

id:aiomock

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

2008/11/15 17:05:13

その他の回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/11/15 14:42:41ここでベストアンサー

ポイント100pt

時間がありましたので、回答します。

どこの行まで実行するかは、A列の最終行としました。

Sub test()
    Dim startRow As Long
    Dim lastRow As Long
    Dim i As Long
    
    Application.ScreenUpdating = False
    
    startRow = Application.InputBox(Prompt:="何行目から処理を始めますか?", Type:=1)
    If startRow = False Then Exit Sub
    If startRow > Rows.Count Then Exit Sub
    
    lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = startRow To lastRow
        ActiveSheet.Rows(i + 1).Delete
        ActiveSheet.Rows(i + 1).Delete
        lastRow = lastRow - 2
    Next
    
    Application.ScreenUpdating = True
End Sub

http://q.hatena.ne.jp/

id:aiomock

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

2008/11/15 17:05:13
id:GIJYUTUSYA3 No.2

GIJYUTUSYA3回答回数8ベストアンサー獲得回数02008/11/15 15:07:14

ポイント30pt

あまり、詳しくないですが、

http://www.hotdocument.net/

http://www.hotdocument.net/product/excel.html

の製品は使えませんか?

外していたらすいません。

もしくは、http://www.moug.net/を見ると良いですよ。

id:aiomock

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

2008/11/15 17:05:15
id:van-dine No.3

van-dine回答回数108ベストアンサー獲得回数112008/11/15 16:44:42

ポイント60pt
Dim Cell As Range
Dim Column As String

Column = InputBox("何行目から処理を始めますか?")
'半角整数を入れなかった時の条件処理は略
Set Cell = Range("A" & Column)
Do
  Cell.Range("2:3").Delete '★
  Set Cell = Cell.Range("A2")
Loop While MsgBox("続けますか?", vbYesNo) = vbYes

★の行で、CellにA5セルを指定したRangeオブジェクトが入っている場合、

Cell.Range("2:3")は、A5セルを仮にA1セルと見た時、2行目~3行目の

セル、つまり6行目~7行目を指定したことになります。

なので、6行目~7行目を削除(.Delete)することになります。

★の1つ下の行では、Cellのセル情報をすぐ下のセルに置き換えます。

終了条件が書かれていなかったので、「はい」と「いいえ」のメッセージボックスを

出し、「はい」と答えている間消し続ける事になります。

↓ダミー

http://q.hatena.ne.jp/1226722548

id:aiomock

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

2008/11/15 17:05:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません