- 締切済み
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つずつコードを作ればできるのですが、直す時大変だし、重くなるので、、
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1725/2595)
Range("a5") >= 3 A5しか見てないからB列以降はA列の○の数が条件となっている Cells(5, i).Value >= 3
- SI299792
- ベストアンサー率47% (774/1620)
貴方のプログラムは、一部しか上がっていないので、どこが悪いか解りません。 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