aşağıdaki kodlar yazılan sayıya göre rastgele sayılar oluşturup topluyor,
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SAYI As Byte, X As Byte
On Error GoTo Son
If Intersect(Target, Range("X3:X65536")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Target <> Empty And IsNumeric(Target) Then
Range("D" & Target.Row & ":W" & Target.Row).ClearContents
If Target > 100 Then
MsgBox "100 den büyük değer girdiniz !" & Chr(10) & "İşleminiz iptal edilmiştir !", vbCritical, "Dikkat !"
Target.ClearContents
Target.Select
GoTo Son
Exit Sub
End If
If Target = 100 Then
For X = 4 To 23
Cells(Target.Row, X) = Cells(1, X)
Next
GoTo Son
End If
BAŞLA:
Randomize
SAYI = Int(Rnd * 5 + 1)
For X = 4 To 23
If Cells(Target.Row, X) = Empty Then
If SAYI <= Cells(1, X) Then
If WorksheetFunction.Sum(Range("D" & Target.Row & ":W" & Target.Row)) <= Target Then
Cells(Target.Row, X) = SAYI
GoTo BAŞLA
End If
Else
GoTo BAŞLA
End If
End If
Next
If WorksheetFunction.CountA(Range("D" & Target.Row & ":W" & Target.Row)) <= 20 And _
WorksheetFunction.Sum(Range("D" & Target.Row & ":W" & Target.Row)) <> Target Then
Range("D" & Target.Row & ":W" & Target.Row).ClearContents
GoTo BAŞLA
End If
MsgBox "Not dağılımı tamamlanmıştır.", vbInformation
Else
Range("D" & Target.Row & ":W" & Target.Row).ClearContents
End If
Son:
Application.ScreenUpdating = True
End Sub
sorun şu 80 ekadar iyi ,80 den sonra kitliyor yada sadece bekliyor.
bunu nasıl çözebiliriz?
ben şöyle bir şey düşündüm;
If Target = 100 Then
For X = 4 To 23
Cells(Target.Row, X) = Cells(1, X)
Next
GoTo Son
End If
burada 100 olursa tüm hepsini 5 dolduruyor
For X = 4 To 22
yaparsan son sütunu (W) boş bırakıyor,
buraya w sütununa 4 nasıl ekletiriz?
bu işlemi geriye doğru sıra ile yapmayı düşünüyorum, yani 21,20 diye 80 e kadar gidecem
her formülde sonda kalan hücrelere 4 atayacak . Bilmeme anlatabildim mi?
yardım ederseniz sevinirim.