Sayısal Loto Uygulaması


Sayısal Loto Uygulaması

Bu uygulamamızda sizlerle birlikte belgemize tablo eklemek ve gerektiğinde de silmek suretiyle seçtiğimiz kolon ki burada satır sayısını ifade ediyor sayısına sahip tablo ekleyerek bu tabloya 1-49 arasında her bir satırda sayı tekrarı olmayan ve sayıların küçükten büyüğe sıralanmış olarak görüntülendiği sayı dizi ekleme işlemini yapacağız. Bu cümlenin en kısa ifadesi seçtiğimiz kolon sayısı kadar sayı oynatan bir sayısal loto uygulaması yapacağız. İsterseniz vakit kaybetmeden hemen işlem basamaklarına geçelim.

  1. Her daim olduğu gibi evvela yeni bir belge açıyor ve makro güvenlik düzeyini düşük olarak ayarlıyoruz.  Nasıl yapılacağını hatırlamak için yine her daim her zaman olduğu gibi bu bağlantıyı kullanabilirsiniz.
  2. Sonrasında aşağıda verilen ekran çıktısını belgenize uyguluyorsunuz. Ekran çıktısında yapılacak işi özetlemesi açısından bir tablo eklenmiş olsada siz bunu eklemesenizde olur. Görüldüğü üzere çalışmamızda kolon sayısını seçmek üzere bir adet ComboBox yani açılan kutu muhtelif sair işlemler için de 2 adet CommandButton nesnesi eklemeniz gerekiyor. Nesnelerin name ve Caption özellikleri aşağıda verilmiştir. Açılan kutunun değerleri ise belge açılırken kod ile yükletilecektir.

  1. Geldik işin son faslına, aşağıda verilen kodları Alt+F11 ile görüntrülenen VBA kod düzenleyicisine yazıyorsunuz, belgenizi kaydedip yeniden başlatıyorsunuz ve test ediyorsunuz. Hepinize bol şanslar artık sayısal lotoda 6 yı bulan bizi de görür herhalde. Bu işin latifesi Allah (c.c.) cem-i cümlemize helal kazanç versin ağız tadı ile de yemeyi nasip etsin.
Not : Arkadaşlar kodları yazarken ekranda gereksiz yere taşmalar oluyor bu nedenle bazı kod satırları _ karakteri ile birden fazla editör satırına yazılmış durumda. Ancak bu durum özellikle Range sınıfı ile aralık seçimlerinde sorun yaratabilir. Bu nedenle kodlarda her ne kadar _ karakteri ile satır bölme işlemi yapılmışsa da siz bir problemle karşılaşırsanız bu satırları _ karakterini sildikten sonra birleştirin lütfen. Saygılarımla

Kaynak Kodlar


'Tanimlanmayan değişkenlerin kullanılmasına izin verilmiyor.
Option Explicit
Private Sub btnCikis_Click()
'1. Acik belgeyi kaydetmeden cik
    Application.Quit wdDoNotSaveChanges
'2. Acik belgeyi kaydet ve  cik
'    Application.Quit wdSaveChanges
End Sub

Private Sub btnOynat_Click()
Dim sayac, indeks, satir, sutun, gecici, sayilar(1 To 6) As Integer, tablo As Table
Dim aralik As Range, durum As Boolean
Randomize
    With ThisDocument
    'Şayet tablo varsa sil
    If .Tables.Count > 0 Then .Tables(1).Delete
    'tablonun ekleneceği 2. bir paragraf yoksa ekleniyor.
    If .Paragraphs.Count < 2 Then .Paragraphs.Add
        Set tablo = .Tables.Add(.Paragraphs(2).Range, ComboKolonSayisi.ListIndex + 1, 6)
        'olustulan tablonun ic ve dis kenarliklari ayarlaniyor
        tablo.Borders.InsideLineStyle = wdLineStyleSingle
        tablo.Borders.OutsideLineStyle = wdLineStyleSingle
        'sayilar aktariliyor
        For satir = 1 To ComboKolonSayisi.ListIndex + 1
            'ilk kolonda 1-6 arasinda bir birinden farklı sayilar tutuluyor ---------------
            sayac = 1
            sayilar(sayac) = Round(Rnd * 49 + 1)
            Do
                durum = True
                gecici = Round(Rnd * 49 + 1)
                For indeks = 1 To sayac
                    If gecici = sayilar(indeks) Then
                        durum = False
                        Exit For
                    End If
                Next
                If durum = True Then
                    sayac = sayac + 1
                    sayilar(sayac) = gecici
                End If
            Loop Until sayac = 6
            '---------------------------------------------------------------------------------------
            'sayilar siralaniyor -----------------------------------------------------------------
            Do
                durum = True
                For sayac = 1 To 5
                    If sayilar(sayac) > sayilar(sayac + 1) Then
                        durum = False
                        gecici = sayilar(sayac)
                        sayilar(sayac) = sayilar(sayac + 1)
                        sayilar(sayac + 1) = gecici
                    End If
                Next
            Loop Until durum = True
            '---------------------------------------------------------------------------------------
            For sutun = 1 To 6
                tablo.Cell(satir, sutun).Range.Text = sayilar(sutun)
            Next
        Next
    End With
End Sub

Private Sub Document_Open()
Dim sayac As Integer
    ComboKolonSayisi.Clear
    For sayac = 1 To 8
        ComboKolonSayisi.AddItem Str(Trim(sayac)) & " KOLON"
    Next
    ComboKolonSayisi.ListIndex = 0
End Sub

Yardımcı olması dileğiyle