• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

A1 hücresine, ara tuşuna basarak belli aralıktan rastgele sayı nasıl getirilir?

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,904
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba Arkadaşlar,
A1 hücresine, ara tuşuna basarak belli aralıktan rastgele sayı nasıl getirilir?
(Örnek 1-20 arası)
Saygılarımla
 
Merhaba Tevfik Bey;
Rastgelearada fonksiyonu, çalışmanız için uygun olur mu?
Örnek olarak;
Kod:
Sub rastgelearada_fonksiyonu()
[A1] = Application.WorksheetFunction.RandBetween(1, 20)
End Sub
 
Denedim sayın hocam, ara tuşu tetiklemiyor
Saygılarımla
 
Alternatif;

Hocam,

A1 e bir text box ekleyin. Özelliklerinden çerçevesiz ve FLAT olarak ayarlayın.
Key_UP olayına da aşağıdaki kodu ekleyin.

Örnek dosya ektedir.

* Boşluk tuşu sadece A1 hücresinde rastgele sayı üretir. Herhangi bir yerde boşluk tuşuna basıldığında sayı üretmeyecektir.

Kod:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 32 Then
     TextBox1.Value = Int((20 - 1 + 1) * Rnd + 1)
  End If
End Sub
 

Ekli dosyalar

Son düzenleme:
Deneyiniz.

Kodları uyguladıktan sonra dosyanızı kayıt edip kapatıp açın. Ya da "Auto Open" makrosunu bir kez çalıştırıp deneyin.

Kod:
Sub Auto_Open()
    Application.OnKey " ", "Sayi_Uret"
End Sub

Sub Sayi_Uret()
10  Randomize
    Sayi = Int(Rnd() * 20 + 1)
    If Sayi = Range("A1") Then GoTo 10
    Range("A1") = Sayi
End Sub

Sub Auto_Close()
    Application.OnKey " "
End Sub
 
Sayın Asri Hocam,
Aramıza hoş geldiniz. TextBox1_KeyUp bunu nasıl ekliyorum. İlginize çok teşekkür ederim, ama daha önce hiç görmedim. Yardımcı olursanız süper olur. Mutlaka öğrenmek istiyorum. Ayrıca bu değeri ben D3 hücresinde kullanmak istiyorum. Gönderdiğiniz dosyada ben ona ulaşamıyorum.
Saygılarımla
 
Son düzenleme:
Sayın Korhan Ayhan Hocam,
Denedim çalıştı. Çok teşekkür ederim.
Saygılarımla
 
Sayın Korhan Ayhan Hocam,
Sayıları, yine ara tuşuna basarak sıralı getirtmek istersem, nasıl bir eklenti yapmam gerekir?
Saygılarımla
 
Sayın Asri Hocam,
Aramıza hoş geldiniz. TextBox1_KeyUp bunu nasıl ekliyorum. İlginize çok teşekkür ederim, ama daha önce hiç görmedim. Yardımcı olursanız süper olur. Mutlaka öğrenmek istiyorum. Ayrıca bu değeri ben D3 hücresinde kullanmak istiyorum. Gönderdiğiniz dosyada ben ona ulaşamıyorum.
Saygılarımla

Hocam,
hoşbuldum, zaman buldukça bakıyorum. Bu video da açıklamaya çalıştım.

 
Sayın Asri Hocam,
İzledim, ama yarın sabah mutlaka daha zinde olurum, o zaman deneyeceğim. Dışarıda da kullanılabiliyor. Deneyip öğreneceğim. Çok teşekkür ederim.
Saygılarımla
 
Sayın Asri Hocam,
İzledim, ama yarın sabah mutlaka daha zinde olurum, o zaman deneyeceğim. Dışarıda da kullanılabiliyor. Deneyip öğreneceğim. Çok teşekkür ederim.
Saygılarımla

Evet hücre içindeymiş gibi görünmesi için çerçeve rengi ve FLat seçimi yapıldı. Sayfa içinde herhangi bir yerde kullanabilirsiniz.
Önemli olan hücre bağlantısını hangi hücreye bağladığınızdır.
 
Sayın Asri Hocam,
Evet, süper
Peki belli bir süre yada 3 defa sıralı da getirmek mümkün mü? Sonrasında rastgeleye geçsin. (Acelesi yok yani.)
Saygılarımla
 
Sayın Asri Hocam,
Evet, süper
Peki belli bir süre yada 3 defa sıralı da getirmek mümkün mü? Sonrasında rastgeleye geçsin. (Acelesi yok yani.)
Saygılarımla

Bu kısmı anlamadım.
ilk üçünü sıralı ama rastgele mi?
İlk sayı 19 gelir ise 19,20, 3. sayı neye göre belirlenecek?
rastgele sayılar üretilip ilk sayı en fazla 17 mi olabilir dememiz gerekiyor.? vb.
 
Sayın Asri Hocam,
Kullanılacak sayılar 1 - 20 arası, önce 3 defa 1 den 20 ye kadar sıralı saydırır, sonra başlar rastgele saydırmaya demek istemiştim.
Saygılarımla
 
Merhaba,

Boş bir modüle aşağıdaki kodu uygulayıp deneyiniz.

İlk 3 set 1-20 arası sayılar sıralı şekilde görünür. Daha sonra rastgele sayılar gelir.

Kod:
Dim Say As Byte

Sub Auto_Open()
    Application.OnKey " ", "Sayi_Uret"
    Say = 1
End Sub

Sub Sayi_Uret()
    If Say <= 3 Then
        If Range("A1") = 20 Then
            Range("A1") = 1
            Say = Say + 1
        Else
            Range("A1") = Range("A1") + 1
        End If
    Else
10      Randomize
        Sayi = Int(Rnd() * 20 + 1)
        If Sayi = Range("A1") Then GoTo 10
        Range("A1") = Sayi
    End If
End Sub

Sub Auto_Close()
    Application.OnKey " "
End Sub
 
Sayın Korhan Ayhan Hocam,
Çok teşekkür ederim.
Saygılarımla
 
Sayın Asri Hocam,
Kullanılacak sayılar 1 - 20 arası, önce 3 defa 1 den 20 ye kadar sıralı saydırır, sonra başlar rastgele saydırmaya demek istemiştim.
Saygılarımla

Sayın Korhan ın kodları ile ekleme yaptım.
Farklı olarak 3 defa sıralı ürettikten sonra kacadet değişkeni kadar rastgele üretiyor ve tekrar 3 defa sıralı üretiyor.
Niye yaptım bilmiyorum ama içindem böyle geldi :)


Kod:
Dim say, uretilen As Integer

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 32 Then
     'TextBox1.Value = Int((20 - 1 + 1) * Rnd + 1)
     Call Sayi_Uret
  End If
End Sub

Sub Sayi_Uret()
'rastgele kaç sayı üretilecek. Sonrasında 3 defa sıralı gelecek
    kacadet = 5
    
    If say <= 3 Then
        If Range("A1") = 20 Then
            Range("A1") = 1
            say = say + 1
            Range("C1") = say
        Else
            Range("A1") = Val(Range("A1")) + 1
            uretilen = 0
        End If
    Else
10      Randomize
        Sayi = Int(Rnd() * 20 + 1)
        If Sayi = Range("A1") Then GoTo 10
        Range("A1") = Sayi
        uretilen = uretilen + 1
        If uretilen >= kacadet Then
           Range("A1").ClearContents
           say = 1
        End If
    End If
End Sub
 

Ekli dosyalar

Geri
Üst