VBA初心者です。やりたい事が上手く出来ないので質問させて下さい。 A列には、乱数を割り振る関数が入っています。

画像

Visual Basic | Visual Basic186閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

日本語が下手ですいません。2,9,3,8という値は、あくまで一例としてなので、その値にしたい訳ではないです。 下記も一例ですが、 添付画像の青の部分で条件を満たしたらC5セルに+1加算し、Doの部分まで戻る。 添付画像の緑の部分で条件を満たしたらC8セルに+1加算し、Doの部分まで戻る。 添付画像の青の部分で条件を満たしたらC5セルに+1加算し、Doの部分まで戻る。 添付画像の4か所全てで条件を満たさなかったので、 以下のセルにこの値が入力される。 C5=2、C6=0、C7=0、C8=1 C9=3 このようにしたいです。

画像

その他の回答(1件)

0

一応、質問と同じコードを少し直したものを載せておきますが 希望通り動きそうですかね? ___________________________ #If Win64 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If Sub macro() j = 0 k = 0 l = 0 m = 0 Do If Range("c9") = "" And Range("a5") <= Range("b5") Then j = j + 1 Range("c5") = j ElseIf Range("c9") = "" And Range("a6") <= Range("b6") Then k = k + 1 Range("c6") = k ElseIf Range("c9") = "" And Range("a7") <= Range("b7") Then l = l + 1 Range("c7") = l ElseIf Range("c9") = "" And Range("a8") <= Range("b8") Then m = m + 1 Range("c8") = m Exit Do End If DoEvents Sleep 10 Loop Range("c10") = j + k + l + m End Sub ____________________________ これを標準モジュールに書くかコピペしてみて下さい。 一番上の#も、ちゃんと付けて下さいね('ω')

ありがとうございます。C列の文字が消せなくなったり、ボタン登録して何度か同じ動作を繰り返そうとしても値が変わらず、連打しすぎたせいかフリーズしたり、マクロが開けなくなったり、Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)の部分が赤くなってしまったりします('ω')