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,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
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
 

AdemCan

Altın Üye
Destek Ekibi
Katılım
1 Eylül 2008
Mesajlar
1,362
Excel Vers. ve Dili
2019 TR
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
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Denedim sayın hocam, ara tuşu tetiklemiyor
Saygılarımla
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
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:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,454
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
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:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Korhan Ayhan Hocam,
Denedim çalıştı. Çok teşekkür ederim.
Saygılarımla
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
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
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
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.

 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
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
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
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.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
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
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
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.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,454
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,593
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Korhan Ayhan Hocam,
Çok teşekkür ederim.
Saygılarımla
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
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

Üst