• 締切済み

vba doloopで=>が機能しません

vbaでa1:a4にランダムで◯を入れて、a5で◯の数を数えます。 その時a5の数が3以上になるまでランダムで入れ、3以上ならb1:b4にランダムで◯を入れて、b5が3以上なら、c1:c4、、、をAd(30回)までしたいのですが、◯の数が3以上じゃなくても隣のセルに行って処理を初めてしまいます。 どうしたら3以上になるまでをすることができますか? 今は dim i as long for i=1 to 30 do until range("a5")=>3 ランダムに入れる処理 loop next i でやってます。 fornext 使わずに1つずつコードを作ればできるのですが、直す時大変だし、重くなるので、、

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.2

Range("a5") >= 3 A5しか見てないからB列以降はA列の○の数が条件となっている Cells(5, i).Value >= 3

  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.1

貴方のプログラムは、一部しか上がっていないので、どこが悪いか解りません。 A5: =COUNTIF(A1:A4,"○") AD5 迄コピペしてある前提で、Macro1 数式を入れてないなら、Macro2 Option Explicit ' Sub Macro1()   Dim Colu As Integer '   [A1:AD4].ClearContents   Application.ScreenUpdating = False '   For Colu = 1 To 30 '     Do While Cells(5, Colu) < 3       Cells(Rnd * 4 + 0.5, Colu) = "○"     Loop   Next Colu End Sub ' Sub Macro2()   Dim Colu As Integer   Dim Area As Range '   [A1:AD4].ClearContents   Application.ScreenUpdating = False '   For Colu = 1 To 30     Set Area = Cells(1, Colu).Resize(4) '     Do While WorksheetFunction.CountIf(Area, "○") < 3       Cells(Rnd * 4 + 0.5, Colu) = "○"     Loop   Next Colu End Sub

関連するQ&A