Özellik ikonu

AddItem

İndirme izni yok

Genel Bakış

AddItem (öğe ekleme yöntemi), ListBox (Liste Kutusu) ve ComboBox (Birleşik Giriş Kutusu) denetimlerinin listesine kod ile yeni bir satır ekler. Öğeyi listenin sonuna ekleyebilir ya da belirttiğiniz sıraya yerleştirebilirsiniz. UserForm açılırken listeleri doldurmanın en yaygın yoludur.

Söz dizimi​

Yöntem, bir liste denetiminin listesine tek bir öğe ekler ve değer döndürmez:
VBA
obje.AddItem [Item], [Index]
  • obje: ListBox ya da ComboBox denetimi (örneğin ListBox1 ya da cmbSehir).
  • Item: Listeye eklenecek metin. İsteğe bağlıdır; verilmezse boş bir öğe eklenir.
  • Index: Öğenin yerleştirileceği sıra numarası. İsteğe bağlıdır; verilmezse öğe listenin sonuna eklenir. Numaralandırma 0'dan başlar; 0 listenin başı, ListCount değeri ise listenin sonudur.

Hangi denetimlerde kullanılır​

AddItem, MSForms kütüphanesindeki ListBox ve ComboBox denetimlerinde bulunur. Bu denetimler UserForm üzerinde ya da çalışma sayfasına Geliştirici > Ekle > ActiveX Denetimleri (Developer > Insert > ActiveX Controls) ile eklenir. Form Denetimleri (Form Controls) grubundaki liste kutusu ayrı bir nesnedir; onun AddItem yönteminde sıra numarası 1'den başlar.
  • Öğe sayısı: ListCount özelliği listedeki öğe sayısını verir.
  • Öğeyi okuma: List(i) ile 0 tabanlı sıradaki öğeye ulaşılır.
  • Silme: RemoveItem tek öğeyi, Clear tüm listeyi siler.

Çok sütunlu liste ve toplu doldurma​

Denetimin ColumnCount özelliği 1'den büyükse AddItem yalnızca ilk sütunu yazar. Diğer sütunlar, eklenen satırın numarasıyla List(satır, sütun) özelliğine atanır. Çok sayıda öğe için List özelliğine bir dizi atamak ya da RowSource kullanmak daha hızlıdır. RowSource doluyken AddItem kullanılamaz.
UserForm içinde tipik kullanım şöyledir:
VBA 5 satır
Private Sub UserForm_Initialize()
    ListBox1.AddItem "Ocak"
    ListBox1.AddItem "Şubat"
    ListBox1.AddItem "Mart"
End Sub

1. Hücrelerdeki şehirleri listeye ekleme​

A sütunundaki şehir adlarını bir birleşik giriş kutusuna döngüyle ekleyen bir makro yazın. Makro, sayfaya geçici bir ActiveX kutusu ekler, öğeleri AddItem ile ekler, her öğenin sıra numarasını ve okunan değeri B ve C sütunlarına yazar, sonra kutuyu siler. Kodu standart bir modüle (Ekle > Modül) yapıştırın.
VBA 25 satır
Option Explicit

Sub ListeyiDoldur()
    Dim ws As Worksheet
    Dim ole As OLEObject
    Dim cb As Object
    Dim son As Long, i As Long

    Set ws = ActiveSheet
    ' Sayfaya geçici bir ActiveX birleşik giriş kutusu ekler
    Set ole = ws.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=250, Top:=10, Width:=120, Height:=20)
    Set cb = ole.Object

    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For i = 2 To son
        ' Şehri listenin sonuna ekler
        cb.AddItem ws.Cells(i, 1).Value
        ' Eklenen öğenin 0 tabanlı sırası ve listeden okunan değer
        ws.Cells(i, 2).Value = cb.ListCount - 1
        ws.Cells(i, 3).Value = cb.List(cb.ListCount - 1)
    Next i

    ' Geçici kutuyu siler
    ole.Delete
End Sub
AddItem
Formülünü incelemek için bir hücre seçin.
ABC
1ŞehirListe SırasıListedeki Öğe
2Ankara0Ankara
3İzmir1İzmir
4Bursa2Bursa
5Adana3Adana
6Konya4Konya
7Trabzon5Trabzon
Şehir ListesiExcelDepo v1.0.0
Her şehir listenin sonuna eklendi. İlk şehir 0. sırada (0), son şehir ise 5. sıradadır. C sütunu listeden okunan öğeyi gösterir; ilk öğe Ankara, son öğe Trabzon olarak okunmuştur.

2. Belirli bir sıraya öğe ekleme​

Önce üç öğeyi sona ekleyin, ardından Index bağımsız değişkeniyle listenin başına ve ortasına iki öğe yerleştirin. Sonuçta listedeki her öğe B sütununa yazılır. Kodu standart bir modüle yapıştırın.
VBA 29 satır
Option Explicit

Sub SiraliEkle()
    Dim ws As Worksheet
    Dim ole As OLEObject
    Dim cb As Object
    Dim i As Long

    Set ws = ActiveSheet
    Set ole = ws.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=250, Top:=10, Width:=120, Height:=20)
    Set cb = ole.Object

    ' Index verilmediği için üç öğe de sona eklenir
    cb.AddItem "Elma"
    cb.AddItem "Armut"
    cb.AddItem "Kiraz"

    ' 0 numaralı sıra listenin başıdır
    cb.AddItem "Muz", 0
    ' 2 numaralı sıraya eklenir; sonraki öğeler bir sıra kayar
    cb.AddItem "Üzüm", 2

    ' Listeyi sayfaya yazar
    For i = 0 To cb.ListCount - 1
        ws.Cells(i + 2, 2).Value = cb.List(i)
    Next i

    ole.Delete
End Sub
AddItem
Formülünü incelemek için bir hücre seçin.
AB
1Sıra NoListe Sonucu
20Muz
31Elma
42Üzüm
53Armut
64Kiraz
Sıralı MeyvelerExcelDepo v1.0.0
Başa eklenen öğe 0. sıradadır (Muz). 2. sıraya eklenen öğe Üzüm olur; önceki 2. sıradaki öğe 3. sıraya kayar (Armut). Son öğe Kiraz olarak kalır.

3. Çok sütunlu liste kutusu doldurma​

Ürün adını AddItem ile, birim fiyat ve stok bilgisini List(satır, sütun) özelliğiyle üç sütunlu bir liste kutusuna yazın. Ardından liste kutusundan okunan satırı D sütununda birleştirin. Kodu standart bir modüle yapıştırın.
VBA 27 satır
Option Explicit

Sub CokSutunluDoldur()
    Dim ws As Worksheet
    Dim ole As OLEObject
    Dim lb As Object
    Dim son As Long, i As Long, r As Long

    Set ws = ActiveSheet
    Set ole = ws.OLEObjects.Add(ClassType:="Forms.ListBox.1", Left:=300, Top:=10, Width:=200, Height:=100)
    Set lb = ole.Object
    lb.ColumnCount = 3

    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For i = 2 To son
        ' AddItem yalnızca ilk sütunu yazar
        lb.AddItem ws.Cells(i, 1).Value
        r = lb.ListCount - 1
        ' Diğer sütunlar List(satır, sütun) ile atanır
        lb.List(r, 1) = ws.Cells(i, 2).Value
        lb.List(r, 2) = ws.Cells(i, 3).Value
        ' Listedeki satırı tek metin olarak sayfaya yazar
        ws.Cells(i, 4).Value = lb.List(r, 0) & " - " & lb.List(r, 1) & " TL - " & lb.List(r, 2) & " adet"
    Next i

    ole.Delete
End Sub
AddItem
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünBirim FiyatStokListeden Okunan
2Kalem15120Kalem - 15 TL - 120 adet
3Defter4580Defter - 45 TL - 80 adet
4Silgi8200Silgi - 8 TL - 200 adet
5Dosya2260Dosya - 22 TL - 60 adet
6Ataş12150Ataş - 12 TL - 150 adet
Ürün FiyatlarıExcelDepo v1.0.0
Liste kutusunun her satırı üç sütundan oluştu. D sütunu, liste kutusundan okunan satırı gösterir; örneğin ilk satır Kalem - 15 TL - 120 adet, son satır ise Ataş - 12 TL - 150 adet olarak okunmuştur. Bu, AddItem ile yalnızca ilk sütunun yazıldığını, diğer sütunların ise List özelliğiyle doldurulduğunu gösterir.

Kullanırken dikkat edin​

  • Sıra numarası 0'dan başlar: Index bağımsız değişkeni 0 tabanlıdır. Listenin sonuna eklemek için ListCount değerini verebilir ya da Index'i hiç yazmayabilirsiniz. ListCount değerinden büyük bir sıra vermek hata üretir.
  • RowSource ile birlikte kullanılamaz: Denetimin RowSource (ya da ActiveX kutusunda ListFillRange) özelliği bir aralığa bağlıysa AddItem hata verir. Önce bu özelliği boşaltın ya da listeyi yalnızca AddItem ile doldurun.
  • Önce temizleyin: Form her açıldığında aynı öğelerin tekrar eklenmemesi için doldurmadan önce Clear yöntemini çağırın. Aksi halde aynı öğeler listede yinelenir.
  • Çok sütunda yalnız ilk sütun yazılır: ColumnCount 1'den büyükse AddItem yalnızca ilk sütunu doldurur. Diğer sütunlar için eklenen satırın sırasını (ListCount - 1) kullanarak List(satır, sütun) özelliğine atama yapın.
  • ActiveX örnekleri hakkında: Örneklerdeki OLEObjects.Add ile ActiveX denetim ekleme, Windows sürümlerindeki Excel'de çalışır; Mac için Excel'de ActiveX desteklenmez. Gerçek projelerde denetim genellikle UserForm üzerinde bulunur ve AddItem, UserForm_Initialize olayında çağrılır.
  • İlgili konular: RemoveItem yöntemi, Clear yöntemi, List özelliği, ListCount özelliği, ListIndex özelliği, RowSource özelliği, ColumnCount özelliği, UserForm_Initialize olayı, ListBox ve ComboBox denetimleri, BENZERSİZ işlevi (yinelenen öğeleri ayıklayarak listeyi hazırlamak için).
Ö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