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.
-
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.
-
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.
-
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