Mini süper ligimize ait tüm işlemleri elle girip görüntüleme işlemini gerçekleştirmiştik. Yapılan tüm işlemleri o uygulamada sırasıyla anlatmıştık. Şimdi bu uygulamayı dinamik hale getireceğiz. Yapılan her düzenlemeden sonra verdiğimiz kodların yeni halini oluşturacağız.
Öncelikle Word programında yeni bir belge oluşturalım. Belgeyi masaüstüne CemilUstaLigi.docm olarak kaydedelim. Çünkü belgemizde makro ve VBA kodu kullanacağımız için uzantısını docm olarak belirledik. Belgemiz açıldığı an yazdığımız komutların çalışmasını istediğimiz için Document_Open() metodunu kullanacağız.
Öncelikle belgemizin program başlığını belirleyelim.
Application.Caption = "Mini Süper Lig Turnuvası"
a) Takımların belirlenmesi
Tüm program boyunca takımların tek değişken yardımıyla kontrol edilmesi, yeni takım eklenmesl, mevcut takımların düzenlenmesi ya da istenilen takımın silinmesi için dizi kullanılacaktır. Dizinin adını takimlar olarak belirleyelim. Daha sonra bu bilgileri veri tabanına aktaracağız. Böylece programa masaüstünden, web sayfasından ve cep telefonundan müdahale edebileceğiz. Buna göre dizimiz aşağıdaki gibi tanımlanacaktır.
Dim takimlar As Variant
takimlar = Array("Altınordu", "Karşıyaka", "Göztepe", "Altay")
Ligimize ait takımları belirledik. Ancak bu takımların kurada hangi sırada olacağı belirlenmelidir. Aksi takdirde her sene takımların maçları hep aynı olur. Bunun için takimlar dizisine ait özelliklerde siralama isminde bir dizi oluşturalım. Takımların kuradaki sıralarını siralama dizisinde oluşturduktan sonra, oluşturulan bu sırayı takımlar dizisine tekrar atayacağız. Bu arada takım sayısını bulmamız gerekir. Ayrıca bilgisayarın takımları rastgele seçmesi için rnd() fonksiyonunu kullanacağız. Seçilen takımın sıra numarasını tutmak için de değişken tanımlanması gerekir. Buna göre değişkenleri tanımlayalım.
Dim takimSayisi, secilenTakim As Integer
takimSayisi = UBound(takimlar)
Dim siralama() As String
ReDim siralama(takimSayisi)
Şimdi takimlar dizisindeki takımların kura çekimini yapalım.
Dim sinir, i As Integer
sinir = UBound(takimlar)
i = 0
Do While UBound(takimlar) >= 0
Randomize
secilenTakim = Int((takimSayisi + 1) * Rnd())
siralama(i) = takimlar(secilenTakim)
Call ElemanSil(secilenTakim, takimlar)
If i < sinir Then
takimSayisi = UBound(takimlar)
i = i + 1
Else
Exit Do
End If
Loop
takimlar = siralama
Yukarıda verilen kodlamada ElemanSil fonksiyonu tanımlanmamıştı. Fonksiyonumuzun tanımını yapalım.
Public Sub ElemanSil(ByVal index As Integer, ByRef takimlar As Variant)
Dim i As Integer
Dim sira As Integer
sira = 0
For i = 0 To UBound(takimlar)
If i <> index Then
takimlar(sira) = takimlar(i)
sira = sira + 1
End If
Next
If sira = 0 Then sira = 1
ReDim Preserve takimlar(sira - 1)
End Sub
Artık kura çekimine girecek takımların sıralanmış halini listeleyebiliriz.
Set doc = ActiveDocument
Set yer = doc.Range
Set paragraf = doc.Paragraphs
doc.StoryRanges(wdMainTextStory).Delete
paragraf.Add.Range.Text = "Kura Çekimine Girecek Takımların Sıralaması" & vbCr
paragraf.Add.Range.Text = "Takımların Kura Sıralaması" & vbCr
For i = 0 To UBound(takimlar)
Set satir = paragraf.Add()
satir.Range.Text = CStr(i + 1) & ". " & takimlar(i) & vbCr
Next
Belgemizi kaydedip çıkalım. Word belgesini açtığınızda aşağıdaki pencere ekrana gelir.
Bir sonraki dersimizde sıralaması belli olan takımlar için kura çekimi işlemini gerçekleştireceğiz. Makalemizi beğenmeyi ve paylaşmayı unutmayınız.