Özellik ikonu

Page

İndirme izni yok

Genel Bakış

Page (MSForms.Page), UserForm üzerindeki MultiPage denetiminin her bir sekmesini temsil eden nesnedir. Sekmenin başlığını, görünürlüğünü, etkinliğini ve içindeki denetimleri VBA ile yönetmenizi sağlar. Çok sekmeli ayar, giriş ve rapor formlarını kodla düzenlemek için kullanılır.

Page nesnesi nasıl çalışır​

Bir UserForm'a MultiPage denetimi eklediğinizde içinde varsayılan olarak iki Page nesnesi bulunur (Page1, Page2). Tüm Page nesneleri MultiPage'in Pages koleksiyonunda toplanır. Her Page, kendi içinde ayrı bir denetim kümesi (düğme, metin kutusu, liste kutusu vb.) barındırır; bu denetimlere Controls koleksiyonu üzerinden ulaşılır.

Formu tasarlamak için Geliştirici > Visual Basic (Developer > Visual Basic) ile Visual Basic Düzenleyicisi'ni açın, Ekle > UserForm (Insert > UserForm) ile form oluşturun, Araç Kutusu'ndan (Toolbox) MultiPage denetimini forma sürükleyin. Sekme eklemek için sekme başlığına sağ tıklayıp New Page seçeneğini kullanabilir ya da kodla Pages.Add yöntemini çağırabilirsiniz.

Page nesnesi bir çalışma sayfası (Worksheet) değildir; yalnızca form üzerindeki bir sekmedir. Formun hangi sekmesinin açık olduğunu MultiPage'in Value özelliği verir; bu değer etkin sekmenin sıfırdan başlayan dizinidir.

Söz dizimi​

Bir Page nesnesine MultiPage denetiminin Pages koleksiyonu üzerinden dizin ya da adla ulaşılır, yeni sekme Add yöntemiyle eklenir:
VBA 5 satır
Dim pg As MSForms.Page

Set pg = UserForm1.MultiPage1.Pages(0)          ' dizinle (0'dan başlar)
Set pg = UserForm1.MultiPage1.Pages("Page1")    ' adla
Set pg = UserForm1.MultiPage1.Pages.Add([Name], [Caption], [Index])
  • Pages(Dizin): Sekmeyi sıfırdan başlayan sıra numarasıyla ya da Name özelliğindeki adla verir. Dizin 0 ilk sekmedir.
  • Name: Add yönteminde yeni sekmenin adıdır; isteğe bağlıdır. Verilmezse Excel otomatik ad (Page3 gibi) üretir. Ad formda benzersiz olmalıdır.
  • Caption: Add yönteminde sekme üzerinde görünen başlıktır; isteğe bağlıdır.
  • Index: Add yönteminde sekmenin konumudur; isteğe bağlıdır, verilmezse sekme sona eklenir.
Add yöntemi eklenen Page nesnesini döndürür. Sekmeyi silmek için Pages.Remove, tüm sekmeleri silmek için Pages.Clear kullanılır; sekme sayısını Pages.Count verir.

Önemli özellikler​

  • Caption: Sekme üzerindeki başlık metnidir.
  • Name: Sekmenin kod içindeki adıdır.
  • Index: Sekmenin Pages koleksiyonundaki sıfırdan başlayan konumudur; MultiPage.Value ile birlikte kullanılır.
  • Visible: False yapılırsa sekme başlığı gizlenir; kullanıcı o sekmeyi göremez.
  • Enabled: False yapılırsa sekme görünür kalır ancak içindeki denetimler kullanılamaz.
  • Controls: Sekmenin içindeki denetimlerin koleksiyonudur; Controls.Add ile çalışma zamanında denetim eklenir.
  • ControlTipText: Fare sekmenin üzerinde beklerken görünen ipucu metnidir.
  • Tag: Sekmeye ek bilgi iliştirmek için kullanılan serbest metin alanıdır.
  • Accelerator: Sekmeye klavyeyle geçmek için kullanılan kısayol harfidir (Alt + harf).

Önemli yöntemler ve olaylar​

  • Activate: İlgili sekmeyi etkin duruma getirir; MultiPage.Value değerini sekmenin dizinine eşitlemekle aynı sonucu verir.
  • Controls.Add: Sekmeye çalışma zamanında denetim ekler; ProgID olarak "Forms.Label.1", "Forms.TextBox.1", "Forms.ListBox.1" gibi değerler kullanılır.
  • Pages.Add / Pages.Remove: Sekme ekler ya da siler.
  • Change (MultiPage olayı): Kullanıcı başka sekmeye geçince tetiklenir. Olay yordamı UserForm'un kod modülüne yazılır ve içinde etkin sekmeyi MultiPage1.Value ile öğrenirsiniz.
  • Enter ve Exit (Page olayları): Sekmeye girildiğinde ve sekmeden çıkıldığında oluşur.
Page denetimi tek başına bir yürütme birimi değildir; kodunuzu standart modüle ya da UserForm'un kod modülüne yazıp Page nesnesine MultiPage üzerinden ulaşırsınız.

1. Sekme başlıklarını ve görünürlüğü sayfadan okuma​

Önce Ekle > UserForm (Insert > UserForm) ile UserForm1 oluşturun ve üzerine 3 sekmeli bir MultiPage1 denetimi yerleştirin. Aşağıdaki kodu standart bir modüle yapıştırın. Makro, örnek sayfadaki tabloya bakarak her sekmenin başlığını ve görünürlüğünü ayarlar, ardından formu açar. Form açıldığı için makro otomatik çalıştırılmaz; siz çalıştırın.

TABLO (hücre = Excel'in gösterdiği değer):
A1 = Sıra
A2 = 1
A3 = 2
A4 = 3
B1 = Sayfa Başlığı
B2 = Genel
B3 = Satış
B4 = Yönetim
C1 = Görünür
C2 = Evet
C3 = Evet
C4 = Hayır
VBA 21 satır
Option Explicit

' Sekme başlıklarını ve görünürlüğü çalışma sayfasından okur
Sub FormuHazirla()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ThisWorkbook.Worksheets("Sayfa Başlıkları")

    With UserForm1.MultiPage1
        For i = 0 To .Pages.Count - 1
            ' B sütunu başlık, C sütunu görünürlük bilgisidir
            .Pages(i).Caption = ws.Cells(i + 2, 2).Value
            .Pages(i).Visible = (ws.Cells(i + 2, 3).Value = "Evet")
        Next i
        ' İlk sekmeyi etkin yap
        .Value = 0
    End With

    UserForm1.Show
End Sub
Page
Formülünü incelemek için bir hücre seçin.
ABC
1SıraSayfa BaşlığıGörünür
21GenelEvet
32SatışEvet
43YönetimHayır
Sayfa BaşlıklarıExcelDepo v1.0.0
Makro form açıldığı için çalıştırılmaz. Çalıştırdığınızda formda Genel ve Satış başlıklı iki sekme görünür; Yönetim sekmesi, C4 hücresinde Hayır yazdığı için Visible özelliği False yapılarak gizlenir. Tabloyu değiştirerek sekmeleri kodu düzenlemeden yönetebilirsiniz.

2. Çalışma zamanında sekme ve liste kutusu ekleme​

UserForm1 üzerinde MultiPage1 bulunsun. Aşağıdaki kod standart modüle yapıştırılır. Makro, MultiPage'e yeni bir Page ekler, sekmeye bir liste kutusu yerleştirir ve örnek sayfadaki personel adlarını listeye doldurur. UserForm1.Show ile form açıldığından makro otomatik çalıştırılmaz.

TABLO (hücre = Excel'in gösterdiği değer):
A1 = Ad Soyad
A2 = Ayşe Demir
A3 = Mehmet Kaya
A4 = Fatma Çelik
A5 = Ali Yıldız
A6 = Zeynep Aydın
B1 = Departman
B2 = Satış
B3 = Muhasebe
B4 = Lojistik
B5 = Satış
B6 = İnsan Kaynakları
VBA 30 satır
Option Explicit

' Yeni bir sekme ekler ve personel listesini bu sekmeye yerleştirir
Sub PersonelSekmesiEkle()
    Dim ws As Worksheet
    Dim pg As MSForms.Page
    Dim lst As MSForms.ListBox
    Dim i As Long, son As Long

    Set ws = ThisWorkbook.Worksheets("Personel")
    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Yeni sekme: ad, başlık
    Set pg = UserForm1.MultiPage1.Pages.Add("pgPersonel", "Personel")

    ' Sekmenin Controls koleksiyonuna liste kutusu ekle
    Set lst = pg.Controls.Add("Forms.ListBox.1", "lstPersonel", True)
    lst.Left = 12
    lst.Top = 12
    lst.Width = 200
    lst.Height = 90

    For i = 2 To son
        lst.AddItem ws.Cells(i, 1).Value
    Next i

    ' Yeni sekmeyi etkin yap ve formu göster
    pg.Activate
    UserForm1.Show
End Sub
Page
Formülünü incelemek için bir hücre seçin.
AB
1Ad SoyadDepartman
2Ayşe DemirSatış
3Mehmet KayaMuhasebe
4Fatma ÇelikLojistik
5Ali YıldızSatış
6Zeynep Aydınİnsan Kaynakları
PersonelExcelDepo v1.0.0
Makro bir formu açtığı için çalıştırılmaz. Çalıştırdığınızda forma Personel başlıklı yeni bir sekme eklenir ve A2:A6 aralığındaki beş ad liste kutusunda görünür. Sekmenin adı (pgPersonel) forma eklendiği anda tanımlanır; aynı form örneğinde makroyu ikinci kez çalıştırırsanız ad zaten kullanıldığı için hata alırsınız.

3. Yetkiye göre sekmeleri etkinleştirme​

UserForm1 üzerindeki MultiPage1 denetiminde sekme başlıkları Genel, Satış, Maliyet ve Yönetim olsun. Kod standart modüle yapıştırılır. Makro, örnek sayfadaki yetki tablosunu okuyup her sekmenin Enabled özelliğini ayarlar ve formu açar; bu nedenle otomatik çalıştırılmaz.

TABLO (hücre = Excel'in gösterdiği değer):
A1 = Sayfa
A2 = Genel
A3 = Satış
A4 = Maliyet
A5 = Yönetim
B1 = Yetki
B2 = Evet
B3 = Evet
B4 = Hayır
B5 = Hayır
VBA 23 satır
Option Explicit

' Yetki tablosuna göre sekmeleri etkin ya da pasif yapar
Sub YetkiUygula()
    Dim ws As Worksheet
    Dim pg As MSForms.Page
    Dim i As Long, son As Long

    Set ws = ThisWorkbook.Worksheets("Yetkiler")
    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For i = 2 To son
        For Each pg In UserForm1.MultiPage1.Pages
            ' Başlığı tablodaki sayfa adıyla eşleşen sekmeyi bul
            If pg.Caption = ws.Cells(i, 1).Value Then
                pg.Enabled = (ws.Cells(i, 2).Value = "Evet")
            End If
        Next pg
    Next i

    UserForm1.MultiPage1.Value = 0
    UserForm1.Show
End Sub
Page
Formülünü incelemek için bir hücre seçin.
AB
1SayfaYetki
2GenelEvet
3SatışEvet
4MaliyetHayır
5YönetimHayır
YetkilerExcelDepo v1.0.0
Makro formu açtığı için çalıştırılmaz. Çalıştırıldığında Genel ve Satış sekmeleri kullanılabilir kalır; Maliyet ve Yönetim sekmeleri başlıkları görünür olduğu halde pasif (gri) olur ve içindeki denetimlere erişilemez. Yetkiyi değiştirmek için B sütunundaki Evet ve Hayır değerlerini düzenlemeniz yeterlidir.

Kullanırken dikkat edin​

  • Dizin sıfırdan başlar: Pages(0) ilk sekmedir. MultiPage1.Value ve Page.Index de sıfırdan başlar. Sekme sayısı 3 ise geçerli dizinler 0, 1 ve 2'dir; Pages(3) hata verir.
  • Visible ve Enabled farkı: Visible = False sekmeyi tamamen gizler, Enabled = False ise sekmeyi görünür bırakıp içeriğini kullanıma kapatır. Etkin olan ilk sekmeyi gizlerseniz MultiPage.Value için başka bir görünür sekme seçtiğinizden emin olun.
  • Ad benzersiz olmalı: Pages.Add ile verdiğiniz Name değeri formda daha önce kullanılmışsa hata oluşur. Formu her açışınızda sekmeleri yeniden ekliyorsanız eklemeden önce var olan sekmeyi kontrol edin ya da adı boş bırakıp Excel'in ad üretmesine izin verin.
  • Denetimlere Page üzerinden ulaşın: Sekme içindeki bir denetim formun Controls koleksiyonunda da görünür. Denetimi doğrudan adıyla (ör. TextBox1) çağırabilirsiniz; ancak çalışma zamanında eklenen denetimleri Page.Controls.Add ile eklemek hangi sekmeye ait olduğunu açıkça belirtir.
  • Page yalnızca MultiPage içinde bulunur: Page nesnesi tek başına oluşturulamaz. Sekmesiz bir görünüm için Frame, düğmeli sekme şeridi için TabStrip denetimini düşünün; TabStrip'te Page değil Tab nesnesi vardır ve sekmenin içeriği ayrı denetimlerle yönetilir.
  • İlgili konular: MultiPage denetimi, TabStrip denetimi, UserForm nesnesi, Controls koleksiyonu, Frame denetimi, ListBox denetimi, UserForm_Initialize olayı, MultiPage Change olayı, Show yöntemi, Worksheets nesnesi.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
12
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst