• ベストアンサー

Excel VBA 情報がある場合は…繰り返すの方法

Sub 空白行を入れる() a = 2 b = 3 For i = 1 To 24 Rows(a & ":" & b).Select Selection.Insert Shift:=xlDown a = a + 3 b = b + 3 Next i End Sub 上記の場合はおわかりのように For文で24回繰り返すだけで芸がありません。このFor文を自動化させるマクロ処理を作成したいのですけど、 セルA1,A2,A3,A4…と順番にみていって情報が入っている場合のみ繰り返す…どう処理すればよろしいでしょうか? アドバイスお願い致します。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

例えば、 Sub Test1() Dim i As Long  i = 1  Do While Range("A" & i).Value <> ""    Rows(i + 1 & ":" & i + 2).Insert    i = i + 3  Loop End Sub とか、 Sub Test2() Dim LRow As Long, i As Long  LRow = Range("A65536").End(xlUp).Row  For i = LRow To 2 Step -1    Rows(i & ":" & i + 1).Insert  Next i End Sub とか、、、条件次第ですね。

u-mesh12
質問者

お礼

おおっ素晴らしい、まさにこの通りです。 Do While文で処理すればよかったのですね。 アドバイスありがとうございました。

その他の回答 (2)

回答No.3

”‥場合のみ繰り返す”っての意味がわからない ですが、とりあえず。 空白のセルが見つかるまでA1,A2,A3,,,の値を 見ていき、値があるセルはなんか処理を行う。 って事ですかね・・・? Sub Macro1()  Do   If ActiveSheet.Cells(1 + Y, 1) = "" Then   MsgBox "セル" & Y & "個に値が入っています。"'‥処理A    Exit Do 'Doを抜ける。   Else   MsgBox "A" & Y & "に値が入っています。"'‥処理B   Y = Y + 1   End If  Loop End Sub

u-mesh12
質問者

お礼

Do ~ Loop & If文で処理する方法もあるんですね。 アドバイスありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

>For文を自動化させるマクロ処理を作成したいのですけど この意味がよく伝わりません。 2行挿入している例との関連は? Sub test01() For i = 1 To 24 If Cells(i, "c") <> "" Then '値がなけれ '(処理) Next i End Sub これでは簡単過ぎると思いますが、もう少し説明を加えてください。 例は Sub test02() For i = 24 To 1 Step -1 Cells(i + 1, 1).EntireRow.Insert Cells(i + 1, 1).EntireRow.Insert Next i End Sub でも同じになりました。

u-mesh12
質問者

補足

(例)データ   A列 1 0.11 2 0.11 3 0.11 4 1.45 5 1.48  ・  ・ データ上記のようにA列に続けて入っているとします。 情報量はランダムで100行もあれば… 1000行ぐらいの時もあり、この時にA列に情報があるかどうか見て あるなら… 2行列を挿入して、また情報が入っているか見に行く。 無いなら… 終了。 という汎用性を持たせる処理をするのが目的でした。私の説明不足でした…。

関連するQ&A