Bu dosya, VBA Userform üzerinde çalışan bir açılır takvim örneğidir. Bir metin kutusuna tıklandığında fare imlecinin yanında takvim penceresi açılır; tıklanan gün, gg.aa.yyyy biçiminde ilgili metin kutusuna yazılır.
Dosyanın içeriği
- devam: Sıra, Okul No ve tarih sütunlarından (11.06.2019, 15.06.2019, 01.11.2019) oluşan devam çizelgesi. Dosya açıldığında bu sayfa seçilir.
- dvm_rapor: DEVAMSIZ ve DEVAM değerlerini gösteren küçük özet tablosu.
- VERİ: A1:AW22 aralığında kullanılan veri sayfası.
- Dosyada bir grafik de bulunur.
Kullanılan formüller
dvm_rapor sayfasındaki devamsızlık yüzdesi şu formülle hesaplanır:=100*A2/$D$2
Makrolar
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir. Kodda dosya silme ya da dışarıya bağlantı işlemi yoktur; yalnızca Windows'un user32 kitaplığındaki GetCursorPos çağrısı ile fare konumu okunur.- Workbook_Open: Dosya açılınca devam sayfasını seçer ve UserForm1 formunu gösterir.
- clasa_ekle_1 (Module2): Takvimin başlangıç yılını 1976, bitiş yılını 2100 olarak belirler ve UserForm1 üzerindeki TextBox1 ile TextBox2 kutularını takvime bağlar. Form açılırken otomatik çalışır.
- UserForm_Initialize (Takvim): Takvim penceresini fare imlecinin konumuna taşır, 42 gün etiketini ve iki kaydırma çubuğunu tanımlar; yıl çubuğunu 0 ile bitiş yılı - başlangıç yılı arasına, ay çubuğunu 1-12 arasına ayarlar. Bugünün tarihi ayrıca gösterilir.
- scrl_bar_Change (Class1): Kaydırma çubukları değişince seçilen ayın gün sayısını ve ilk gününün haftanın hangi gününe denk geldiğini hesaplar, günleri etiketlere dizer. Boş etiketler gri olur, bugünün tarihi kırmızı gösterilir.
- gunler_Click (Class1): Tıklanan günü DateSerial ile tarihe çevirip aktif metin kutusuna yazar ve takvimi kapatır. "bugün" etiketi tıklanırsa güncel tarih yazılır.
- takvim_txt_MouseDown (Class1): Metin kutusuna tıklanınca takvimi açar; kutu boşsa içinde bulunulan ay, doluysa kutudaki tarihin ayı gösterilir.
Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin; UserForm1 otomatik görüntülenir.
- TextBox1 ya da TextBox2 kutusuna tıklayın; takvim açılır.
- Yıl ve ay için kaydırma çubuklarını kullanın.
- İstediğiniz güne tıklayın; tarih metin kutusuna yazılır ve takvim kapanır.
- Başka bir forma eklemek için clasa_ekle_1 içindeki takvim_txt dizisi artırılır ve yeni metin kutusu aynı biçimde bağlanır.