イメージとしては以下のような感じです。
━━【A】━━━━
【1】あいうえお
【2】かきくけこ
【3】さしすせそ
【4】たちつてと
【5】なにぬねの
【6】はひふへほ
【7】まみむめも
【8】やゆよ
【9】らりるれろ
━━━━━━━━━
↓マクロ実行後↓
━━【A】━━━━
【1】さしすせそ
【2】はひふへほ
【3】らりるれろ
━━━━━━━━━
当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。
よろしくお願いいたします。
Sub test() b = 1 For a = 1 To 65536 If Cells(b, 1) = "" Then Exit For '行を消す Rows(b).Delete Shift:=xlUp Rows(b).Delete Shift:=xlUp b = b + 1 Next a End Sub
行を消すのは
Rows(b).Delete Shift:=xlUp
でやっています。
問題なのは 消したときに 行の位置が 変わっていることです。
なので 同じことを やると 次の行も削除できます。
3行目は残すので 行カウンタを+1してやります。
で A列のセルに何も入っていなかったら 終了となります。
>当方VBA初心者ですので、できるだけわかりやすく
マクロをいきなり作ろうとするのではなく手作業を記録させることからはじめないといけないです
【1】マクロ記録
手作業で2行ずつ消していった場合に自動的に生成されるVBAのコード
Rows("1:2").Select Selection.Delete Shift:=xlUp Rows("2:3").Select Selection.Delete Shift:=xlUp Rows("3:4").Select Selection.Delete Shift:=xlUp
【2】マクロ記録の解釈
最初の2行は1:2が対象となっていますが、最初の2行を消した段階で3行目より下のものがズリあがってきてますので、次の対象は2:3ということになっています
プログラムの際には1:2の次が1繰り上がって2:3、その次も1繰り上がって3:4・・・以下繰り返し
【3】ループを使って繰り返し行うように変更
カウンタを変数r としてA列が空っぽならループしないというように考え、以下のように作成(テスト済み)
Sub Macro1() Dim r As Long r = 1: 'スタートラインをここに書く Do While (Cells(r, 1).Value <> "") Rows(r & ":" & r + 1).Delete Shift:=xlUp r = r + 1 Loop End Sub
技術的質問の場合には質問し返す場合もありますので「コメント・トラックバックを表示する」にチェックを入れておくことを勧めます
技術的質問の場合は多くの場合が個別案件になりますのでURL必須は邪魔な場合が多いです(リンクのほうが簡単であったり、リンクが必要であったりすれば回答者側判断でリンクしますよ)
コメント(0件)