• DİKKAT

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

VBA Rnd Komutu (random) Özellikleri

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam Arkadaşlar,
Random komutu olan VBA.Rnd komutunu kullanıyorum. sizlere bir kaç sorum olacaktı;

1.sorum: VBA.Rnd(?) 'deki parantez içi nasıl kullanılıyor? Aşağıdaki gibi test kodları yazdım. parantez içindeki -8 sayısını değiştirdikçe değişik şeyler çıkıyor. mesela Clng(VBA.Rnd*3) sonucu for-next döngüsünde değişmez oluyor.

-8 sayısını örnektir. zaten () içi nasıl kullanılıyor bilmiyorum.

Kod:
Sub rnd_test()

Dim MyValue

For i = 1 To 50
MyValue = CLng(VBA.Rnd(-8)) & "-" & CLng(VBA.Rnd * 3)
deg = deg & vbLf & MyValue
Next

MsgBox deg

End Sub

2.sorum: VBA.Randomize nasıl kullanılıyor? çok denemeler yaptım kullanamadım.
 
Merhaba,

RND fonksiyonu yalnız başına kullanılırsa 1 den küçük değerler üretir. Üretilen değerleri sıfırdan büyük ya da eşittir. Yani 0>= <1 aralığında benzersiz single değerler üretir.

1-6 arası tam sayılar üretmek için aşağıdaki kodu kullanabilirsiniz.

Kod:
Sub TEST_TAMSAYI()
    VBA.Randomize
    MsgBox CInt(Int((6 * VBA.Rnd()) + 1))
End Sub

INT komutu tamsayı için kullanılır. Kaldırırsanız ondalık sayılar üretebilirsiniz.

Kod:
Sub TEST_ONDALIK_SAYI()
    VBA.Randomize
    MsgBox 6 * VBA.Rnd() + 1
End Sub
 
Alternatif olsun. (1'den 10'a sayıları 1'er kez rasgele olarak seçer.)

Kod:
Sub Düğme1_Tıklat()
10  [A1:A10].ClearContents          'A1:A10 aralığını temizle
20  On Error Resume Next            'Hata ile karşılaşırsan devam et
30  Randomize                       'Her Start'ta rastgele sayı ile başla
40  For a = 1 To 10                 'a için 1 den 10 a say
50  b = Int(Rnd * 10) + 1           'b için 1-10 (dahil) bir sayı tut
60  [A1:A10].Find(b).Activate       'A1:10 arasında b'yi ara
70  If ActiveCell = b Then GoTo 50  'bulursan yeni sayı için 50'ye git
80  If b = 0 Then GoTo 50           'eğer b=0 ise yeni sayı için 50'ye git
90  Cells(a, 1) = b                 'b değerini hücreye yaz
100 Next a                          'For döngüsü sonu
End Sub
 
Korhan Hocam,
Sorum yanlış anlaşılmış sanırım.
Ben Vba.Rnd() komutunu yazdıktan sonra (parantezin içi) nasıl kullanılıyor? onu merak ediyorum. Yani VBA.Rnd(bu kısmı).
ikinci sorum önce Randomize niye kullanılıyor?
 
Merhaba,

Biraz araştırdım ve aşağıdaki bilgiye ulaştım.

Kaynak; Tıklayın...


2.6. Rnd Fonksiyonu

Rnd fonksiyonu rastgele sayılar üretmek için kullanılır.
Kullanımı aşağıdaki gibidir.

Sonuc = Rnd[sayı]

Burada sayı ifadesi herhangi pozitif veya negatif bir
değer alabilir. Bu parametre opsiyonel olup
tanımlanması zorunlu değildir. Eğer sayı negatifse Rnd
fonksiyonu sürekli olarak aynı sayıyı üretir. Eğer sayı
sıfırsa Rnd fonksiyonu en son üretilen sayıyı tekrar
üretir. Eğer sayı sıfırdan büyükse ya da ihmal
edilmişse sıradaki rastgele sayı üretilir.

Verilen bir aralık içinde herhangi rastgele bir tamsayı
üretmek için aşağıdaki kod kullanılabilir:

Sonuc = Int((üst_limit – alt_limit + 1) * Rnd + alt_limit)

Burada alt_limit ve üst_limit verilen aralığın sırasıyla
alt ve üst sınır değerleridir.
 
Korhan hocam çok teşekkür ederim. Nihayet sorularımdan birini anlatabilmişim.
Peki randomize komutu niye kullanılıyor? ben rnd komutu öncesi kullandım. herhangi bir değişiklik görmedim.
(Not: yukarıda kaynak olarak verdiğiniz link şu an yazıştığımız konuyu açıyor)
 
...... Peki randomize komutu niye kullanılıyor? ben rnd komutu öncesi kullandım. herhangi bir değişiklik görmedim.
(Not: yukarıda kaynak olarak verdiğiniz link şu an yazıştığımız konuyu açıyor)

RND komutu dosyayı her açtınızda her seferinde aynı sırayla ve değerde sayılar üretir. Bunun önüne geçmek için rasgele sayı üretiminde, bilgisayarda sürekli çalışan ve her anı farklı tek bilgi olan sistem saatinin kullanılması gerekir. İşte Randomize komutu rasgele sayı üretmek için sistem saatinin dikkate alınmasını sağlar. Böylece sürekli aynı sayıların üretilmesinin önüne geçilmiş olur.
 
Haklısınız yanlış bağlantı vermişim. Üstteki mesajımdaki bağlantıyı güncelledim.

PDF olarak açılmaktadır. CTRL+F ile RND yazıp arama yaparsanız ilgili sayfa açılacaktır.

....
(Not: yukarıda kaynak olarak verdiğiniz link şu an yazıştığımız konuyu açıyor)
 
Teşekkürler

Selamlar,

Göstermiş olduğunuz yoğun ilgiden dolayı Levent hocamıza ve ExcelF1(4. mesaj)
yoldaşımıza teşekkür ederim.
Özellikle de Korhan hocamızın 8. mesajında verdiği PDF ile bizi fazlasıyla aydınlattığı için bir kez daha kendisine karşı minnettarım.
 
Geri
Üst