Halı Saha Oyuncularını Mevkilerine Göre Seçerek Kadroyu Kaydedin
Bu makrolu Excel çalışma kitabı, halı saha oyuncularını mevkilerine göre listelemek ve bu listeden bir kadro seçmek için hazırlanmış bir örnektir. Oyuncu adları Kaleci, Defans, Ortasaha, Forvet ve Yedek başlıkları altında tutulur. Kullanıcı formdaki oyuncu ağacından bir ad seçer ve ilgili mevki alanına ekler. Seçilen kişiler başka bir bölümde kadro olarak gösterilir; kayıt düğmesi bu bilgileri çalışma sayfasına aktarır. Böylece aday oyuncu listesi ile seçilmiş kadro aynı kitap içinde yönetilebilir.Dosyanın yaptığı işlem otomatik takım kura çekimi değildir. Oyuncular rastgele dağıtılmaz, performans puanı verilmez ve iki takımın güç dengesi hesaplanmaz. Seçim kullanıcı tarafından yapılır. Kaynaktaki örnekler tek isimlerden oluşur; gerçek kişi iletişim bilgisi, lisans numarası veya maç istatistiği bulunmaz. Çalışma kitabı, VBA UserForm ve liste denetimleriyle oyuncu seçimi yapılmasının uygulamalı bir örneğini sunar. Kullanım amacı bu yerel liste ve kadro iş akışıyla sınırlıdır.
Kadro Sayfasının Düzeni
Çalışma kitabında Kadro adlı tek görünür sayfa bulunur. İlk satırdaki beş başlık A:E sütunlarına yerleştirilmiştir. Her sütunun altındaki isimler ilgili mevkinin adaylarını temsil eder. Kaynak örnekte beş mevki altında toplam on beş oyuncu adı vardır; bu adlar, ilk formdaki ağaç görünümünde beş başlığın altında gösterilir. Bu nedenle yüklenen ağaç beş ana düğüm ile on beş oyuncu düğümünden oluşur. Mevki başlıkları formdaki seçme alanlarının açıklamalarını da besler.Sayfada hücre formülü bulunmaz. Excel tablosu nesnesi, grafik, adlandırılmış aralık ve veri doğrulama listesi de yoktur. İşlevlerin tamamı makro yordamları ve form denetimleri üzerinden yürütülür. Oyuncu adları hücrelerde saklanır; formdaki seçim listeleri ise kullanıcı arayüzünün geçici durumudur. Bir oyuncunun aday listesinde bulunması, onun kaydedilmiş kadroda otomatik olarak yer aldığı anlamına gelmez. Adayların düzenlenmesi ve kadronun kaydedilmesi iki ayrı işlemdir.
Mevki Ağacından Oyuncu Seçme
UserForm1, adayları TreeView denetiminde gösterir. Kaleci, Defans, Ortasaha, Forvet ve Yedek düğümleri açılarak altlarındaki isimler seçilebilir. Seçilen oyuncunun bağlı olduğu başlık, eklenmek istenen mevkiyle karşılaştırılır. Örneğin kaleci grubundaki bir adın defans listesine eklenmesi istenirse form uygun olmadığını bildiren bir mesaj gösterir. Bu kontrol, aynı isim farklı sütunlarda yer alsa bile seçilen ağaç düğümünün üst grubuna dayanır.Kaleci listesinde yalnız bir kişi seçilmesine izin veren kontrol vardır. Diğer seçim listelerinde aynı adın tekrar eklenmesi engellenir. Mevki alanlarının listeleri kullanıcının seçimlerini gösterir; mevcut form düzeninde sahaya aktarılacak gösterim yedi yerden oluşur. Bu yerler bir kaleci, üç defans, iki orta saha ve bir forvet olarak tanımlanmıştır. Yedek listesi ayrıca seçilebilir, ancak kayıt düğmesi yedekleri O3:O9 aralığındaki yedi satıra eklemez. Bu davranış kaynak formun kadro düzeninden gelir.
Seçilen Kadronun Sayfaya Aktarılması
Formun kadro gösterimindeki açıklamalar seçilen kişilerin adlarıyla güncellenir. Kaleci satırı Kaleci ifadesiyle, defans satırları Defans ifadesiyle, orta saha satırları Ortasaha ifadesiyle ve son satır Forvet ifadesiyle başlar. Kayıt düğmesi bu yedi açıklamayı Kadro sayfasındaki O3:O9 hücrelerine yazar. Sonrasında kadronun kaydedildiğini belirten mesaj gösterilir. Bu hücreler oyuncu adaylarının bulunduğu A:E sütunlarından ayrıdır.Kadro kaydı, Excel dosyasının diske kaydedilmesinden farklıdır. Düğme çalışma kitabındaki hücreleri değiştirir; kitabın sonraki açılışta da aynı veriyi taşıması için normal Excel kaydetme işlemi yapılmalıdır. Makro yeni bir dış dosya üretmez, web servisine veri göndermez ve yazıcıya çıktı yollamaz. Seçim formundaki listeler kapatılıp yeniden açıldığında aynı geçici seçimlerin otomatik olarak geri yüklenmesi için ayrı bir yordam bulunmaz. Kalıcı veri, aday hücreleri ve kaydedilmiş kadro hücreleridir.
Oyuncu Listesini Düzenleme Formu
UserForm2, beş mevkinin adaylarını ayrı liste kutularında gösterir. Kaleci, Defans, Ortasaha, Forvet ve Yedek alanlarının her birinin ekleme düğmesi vardır. Düğmeye basıldığında yeni oyuncu adının yazılması için bir giriş kutusu açılır. Girilen ad listeye eklenir ve ilgili sütunun hücrelerine aktarılır. Düzenleyici formun mevcut giriş kapasitesi her mevki için A2:A50 benzeri kırk dokuz hücrelik aralıktır; farklı mevkilerin kayıtları kendi sütunlarında tutulur.Listede seçilmiş bir oyuncu Delete tuşuyla kaldırılabilir. Silme sonrasında kalan kişiler ilgili sütuna yeniden yazılır ve listenin sonundaki eski hücre temizlenir. Seçili öğe yokken silme işlemi yapılmaz. Boş giriş veya giriş kutusunun iptal edilmesi yeni kişi oluşturmaz. Kırk dokuz kişilik kapasite dolduğunda ekleme yerine uyarı verilir. Aday isimlerinin tek bir sütunda aralıksız tutulması önemlidir; kaynak yükleme yordamı ilk boş hücrede okumayı bırakır.
Dar Makro Düzeltmesinin Kapsamı
Özgün sürümde seçilmiş kaleci kaldırıldığında kadro açıklamasında önceki adı gösteren metin kalabiliyordu. Bunun nedeni boş liste öğesine erişim hatasının atlanması ve eski açıklamanın önceden temizlenmemesiydi. Yeni sürüm, yedi kadro açıklamasını yenilemeden önce temizler. Böylece kaldırılmış bir oyuncunun adı eski gösterimden yanlışlıkla kayda taşınmaz. Mevki adları, seçim kutuları ve yedi kişilik gösterim düzeni korunmuştur; farklı bir takım oluşturma algoritması eklenmemiştir.Özgün düzenleyicideki hücre yazma kodu kaleci için ilk beş, diğer mevkiler için ilk yedi liste öğesini yazıyordu. Daha uzun bir listede silme veya ekleme yapıldığında formda kalan bazı adlar sayfaya aktarılmıyordu. Dar düzeltme, mevcut kırk dokuz satırlık kapsam içinde bütün liste öğelerini sırayla yazar. Kapasite ve boş giriş kontrolleri de bu işleme bağlanmıştır. İki formun denetimleri, görsel düzeni ve diğer VBA bileşenleri korunmuş; yalnız VBA proje parçası değiştirilmiştir.
Makro ve Denetim Gereksinimleri
Dosya XLSM biçimindedir ve form işlevleri için VBA çalıştırabilen masaüstü Excel gerekir. Hücreleri görüntüleyen fakat VBA çalıştırmayan bir uygulama, oyuncu seçim ve düzenleme arayüzünü kullanamaz. İlk formdaki TreeView, kaynakta bulunan MSComctlLib başvurusunu kullanır. İncelenen masaüstü ortamda gerçek form ve ağaç denetimi çalıştırılmıştır; bunun başka her bilgisayarda aynı şekilde kurulmuş olduğu varsayılmaz. Başvuru eksikse yerel Excel uyumluluğunun değerlendirilmesi gerekir.Makro güvenliği genel olarak gevşetilmez. Dosyanın kaynağı ve işlevi incelendikten sonra yalnız bu çalışma kitabı için Excel'in uygun açma yöntemi kullanılmalıdır. Dosyada otomatik açılış yordamı veya dış ağ işlemi tespit edilmemiştir. Form, Module1 içindeki Form yordamıyla açılır. Bu bilgi işlevin nasıl başlatıldığını açıklar; yalnız çalışma kitabının açılması kadronun kendiliğinden oluşturulacağı anlamına gelmez. Mevcut düğme ve form davranışları kullanıcı etkileşimiyle çalışır.
Galeri ve Kullanım Sınırları
Galeri, gerçek Kadro sayfasını ve iki gerçek VBA formunu ayrı görüntülerle gösterir. Kapaktaki renkli oyuncu tablosu konu anlatımı için hazırlanmış bir illüstrasyondur; çalışma kitabının ekran görüntüsü yerine geçmez. İndirilen dosyada özgün aday örnekleri korunur. Bağımsız kontrollerde farklı Türkçe adlarla yedi kadro satırının aktarılması, kaldırılmış kaleci açıklamasının boş kalması ve beş mevkinin uzun listelerinin silme sonrasında eksiksiz saklanması sınanmıştır.Bu örnek küçük bir kadro seçimi ve liste düzenleme aracıdır. Maç takvimi, puan tablosu, oyuncu performansı, lisans takibi veya otomatik yedek değiştirme özelliği bulunmaz. Seçim listelerinde gösterim alanının taşıdığından fazla kişi seçilirse yedi kadro yerinin hangi liste sırasını kullandığı dikkate alınmalıdır. Eksiksiz kadro seçimi kullanıcı sorumluluğundadır; kaynak kayıt düğmesi yedi yerin doluluğunu zorunlu kılan ayrı bir doğrulama sunmaz. Özgün sürüm geçmişte korunur, dar onarım güncel sürüm olarak ayrıca sunulur.