Özellik ikonu

LinkedCell

İndirme izni yok

Genel Bakış

LinkedCell (ControlFormat.LinkedCell), bir form denetiminin (onay kutusu, açılan liste, kaydırma çubuğu, çevirme düğmesi gibi) değerini yazdığı hücreyi belirleyen özelliktir. Denetimin durumu değiştikçe bağlı hücre otomatik güncellenir, hücreye yazılan değer de denetimi günceller. Böylece formüller, denetimin seçimine makro çalıştırmadan tepki verebilir.

Söz dizimi​

LinkedCell özelliği, Shape nesnesinin ControlFormat alt nesnesi üzerinden kullanılır. Okunabilir ve yazılabilir bir String özelliğidir.
VBA 5 satır
ifade.LinkedCell
ifade.LinkedCell = "$B$2"

Dim adr As String
adr = ActiveSheet.Shapes("Onay Kutusu 1").ControlFormat.LinkedCell
  • ifade: Bir form denetiminin ControlFormat nesnesini veren ifade; örneğin Shapes("Onay Kutusu 1").ControlFormat. Zorunludur.
  • Değer (String): Bağlanacak hücrenin adresi; örneğin "$B$2" ya da "B2". Boş metin ("") atanırsa bağlantı kaldırılır.
  • Dönüş değeri: Denetimin bağlı olduğu hücrenin adresini metin olarak verir; bağlantı yoksa boş metin döner.

Denetime göre bağlı hücreye yazılan değer​

Bağlı hücreye ne yazılacağı denetimin türüne göre değişir:
  • Onay kutusu (Check Box): İşaretliyse DOĞRU (TRUE), değilse YANLIŞ (FALSE) yazılır. Üç durumlu kutuda karışık durum hücrede #YOK (#N/A) olarak görünür.
  • Seçenek düğmesi (Option Button): Aynı grup kutusundaki düğmeler tek hücreye bağlanır; seçili düğmenin sıra numarası yazılır.
  • Açılan liste ve liste kutusu (Drop Down, List Box): Seçilen öğenin listedeki sıra numarası yazılır, öğenin metni yazılmaz. Metne ulaşmak için bu numara İNDİS gibi bir işlevle kullanılır.
  • Kaydırma çubuğu ve çevirme düğmesi (Scroll Bar, Spinner): Geçerli tam sayı değeri yazılır; sınırlar Min ve Max özellikleriyle belirlenir.
Bağlantı çift yönlüdür: hücreye elle değer yazarsanız denetim de buna göre değişir.

Kullanım ve arayüz karşılığı​

Aynı işlemi arayüzden yapmak için denetime sağ tıklayıp Denetimi Biçimlendir > Denetim > Hücre bağlantısı (Format Control > Control > Cell link) kutusunu doldurursunuz. VBA ile bu kutu LinkedCell özelliğine karşılık gelir.
Denetimi makroyla oluşturuyorsanız önce AddFormControl yöntemiyle denetimi ekleyin, sonra ControlFormat.LinkedCell özelliğini atayın, en son başlangıç değerini (Value ya da ListIndex) verin. Böylece başlangıç değeri doğrudan bağlı hücreye yansır.

1. Onay kutularını hücrelere bağlama​

Her görev satırı için bir onay kutusu oluşturulur ve B sütunundaki hücreye bağlanır. C sütunundaki formül, onay durumuna göre metin gösterir. Kodu standart modüle yapıştırın; makro bağlı hücrenin adresini D sütununa da yazar.
VBA 29 satır
Option Explicit

Sub OnayKutulariniBagla()
    Dim ws As Worksheet
    Dim shp As Shape
    Dim r As Long

    Set ws = ActiveSheet

    For r = 2 To 4
        ' E sütunundaki hücrenin üzerine bir onay kutusu ekle
        Set shp = ws.Shapes.AddFormControl(xlCheckBox, ws.Cells(r, 5).Left, ws.Cells(r, 5).Top, 80, ws.Cells(r, 5).Height)
        shp.Name = "chkOnay" & r
        shp.OLEFormat.Object.Caption = "Onay"

        ' Kutuyu aynı satırdaki B hücresine bağla
        shp.ControlFormat.LinkedCell = "$B$" & r

        ' Üçüncü görev dışındakileri işaretle
        If r <> 3 Then
            shp.ControlFormat.Value = xlOn
        Else
            shp.ControlFormat.Value = xlOff
        End If

        ' Bağlı hücre adresini D sütununa yaz
        ws.Cells(r, 4).Value = shp.ControlFormat.LinkedCell
    Next r
End Sub
LinkedCell
Formülünü incelemek için bir hücre seçin.
ABCD
1GörevOnayDurumBağlı Hücre
2Rapor hazırlandıDOĞRUTamamlandı$B$2
3Fatura kontrol edildiBekliyor$B$3
4Sevkiyat planlandıDOĞRUTamamlandı$B$4
Onay ListesiExcelDepo v1.0.0
Makro her satır için bir onay kutusu ekler ve B sütunundaki hücreye bağlar. İlk görevin durumu Tamamlandı, ikinci görevin durumu Bekliyor olur; çünkü yalnız ilk ve son kutu işaretlenmiştir. D2 hücresine yazılan $B$2, LinkedCell özelliğinin döndürdüğü bağlantı bilgisidir. Kutuyu elle işaretlediğinizde B hücresi ve C sütunundaki formül kendiliğinden güncellenir.

2. Çevirme düğmesiyle adet ayarlama​

Her ürün satırına bir çevirme düğmesi (Spinner) eklenir ve B sütunundaki adet hücresine bağlanır. D sütunundaki formül tutarı hesaplar. Kodu standart modüle yapıştırın.
VBA 29 satır
Option Explicit

Sub AdetDugmeleriniBagla()
    Dim ws As Worksheet
    Dim shp As Shape
    Dim baslangic As Variant
    Dim r As Long

    Set ws = ActiveSheet

    ' Her satırın başlangıç adedi
    baslangic = Array(5, 12, 8)

    For r = 2 To 4
        ' E sütununa çevirme düğmesi ekle
        Set shp = ws.Shapes.AddFormControl(xlSpinner, ws.Cells(r, 5).Left, ws.Cells(r, 5).Top, 16, ws.Cells(r, 5).Height)
        shp.Name = "spnAdet" & r

        With shp.ControlFormat
            .Min = 0
            .Max = 100
            .SmallChange = 1
            ' Düğmeyi B sütunundaki adet hücresine bağla
            .LinkedCell = "$B$" & r
            ' Başlangıç değeri bağlı hücreye yazılır
            .Value = baslangic(r - 2)
        End With
    Next r
End Sub
LinkedCell
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünAdetBirim FiyatTutar
2Klavye5450,002.250,00
3Fare12275,003.300,00
4Monitör83.200,0025.600,00
Sipariş AdetleriExcelDepo v1.0.0
Adet hücreleri çevirme düğmelerine bağlandığı için B sütununa makro değil denetim değer yazar. Klavye satırının tutarı 2.250,00, fare satırının tutarı 3.300,00, monitör satırının tutarı 25.600,00 olarak hesaplanır. Düğmenin okuna her tıklayışınızda adet SmallChange kadar değişir ve tutarlar anında yenilenir.

3. Açılan listede seçilen sıra numarası​

Bir açılan liste (Drop Down) A2:A6 aralığındaki şehirlerle doldurulur ve B2 hücresine bağlanır. Bağlı hücreye şehrin adı değil sıra numarası yazıldığı için C2 hücresi İNDİS işleviyle şehir adını getirir. Kodu standart modüle yapıştırın.
VBA 22 satır
Option Explicit

Sub SehirListesiniBagla()
    Dim ws As Worksheet
    Dim shp As Shape

    Set ws = ActiveSheet

    ' E2 hücresinin üzerine açılan liste ekle
    Set shp = ws.Shapes.AddFormControl(xlDropDown, ws.Range("E2").Left, ws.Range("E2").Top, 100, 20)
    shp.Name = "ddSehir"

    With shp.ControlFormat
        ' Liste öğelerinin alındığı aralık
        .ListFillRange = "$A$2:$A$6"
        .DropDownLines = 5
        ' Seçilen öğenin sıra numarası B2 hücresine yazılır
        .LinkedCell = "$B$2"
        ' Listeden üçüncü öğeyi seç
        .ListIndex = 3
    End With
End Sub
LinkedCell
Formülünü incelemek için bir hücre seçin.
ABC
1Şehir ListesiSıra NoSeçilen Şehir
2Ankara3İzmir
3İstanbul
4İzmir
5Bursa
6Antalya
Şehir SeçimiExcelDepo v1.0.0
Makro çalıştıktan sonra B2 hücresi listede seçili olan öğenin sıra numarasını tutar ve C2 hücresi seçilen şehri gösterir: İzmir. Listeden başka bir şehir seçtiğinizde B2 ve C2 kendiliğinden değişir; formülü hiçbir makro çalıştırmadan kullanabilirsiniz.

Kullanırken dikkat edin​

  • Yalnızca form denetimlerinde geçerlidir: ControlFormat nesnesi yalnız Form Denetimleri için vardır. ActiveX denetimlerinde bağlantı, denetimin kendi LinkedCell özelliğiyle (OLEObject üzerinden) kurulur; ActiveX denetiminin Shape.ControlFormat özelliğine erişmeye çalışmak hata verir. Ayrıca bazı denetimlerde (grup kutusu, etiket, düğme gibi) değer üretilmediği için bağlantı anlamlı değildir.
  • Adres metin olarak verilir: Özelliğe hücre başvurusu (Range nesnesi) değil, adresi içeren bir metin atayın; örneğin "$B$2". Döngü içinde adres oluştururken "$B$" & r gibi birleştirme kullanabilirsiniz. Bağlantıyı kaldırmak için özelliğe boş metin atayın.
  • Bağlı hücreye yazılan değer sıra numarasıdır: Açılan liste ve liste kutusunda bağlı hücrede öğenin metni değil, listedeki sıra numarası bulunur. Metne ulaşmak için İNDİS işlevini kullanın. Seçenek düğmelerinde de aynı grup kutusundaki tüm düğmeler aynı hücreye bağlanmalıdır; hücre seçili düğmenin sırasını gösterir.
  • Bağlı hücreye formül yazmayın: Bağlı hücreyi denetim yönetir. İçine formül yazarsanız denetim değer yazdığında formülünüz silinir. Bağlı hücreyi yalnız denetimin ürettiği değeri okumak için kullanın ve hesapları yanındaki hücrelerde yapın.
  • Sıra ve ad önerileri: Denetimi eklerken önce Min, Max gibi sınırları, sonra LinkedCell özelliğini ve en son Value ya da ListIndex değerini atayın. Denetimlere Name özelliğiyle anlamlı adlar vermek, sonradan Shapes koleksiyonundan bulmayı kolaylaştırır. Makroyu aynı sayfada tekrar çalıştırırsanız aynı adlı denetimler çoğalır; yeniden çalıştırmadan önce eskileri silin.
  • İlgili konular:
    • Shapes.AddFormControl: Sayfaya form denetimi ekleyen yöntem.
    • ControlFormat.Value: Denetimin geçerli değeri.
    • ControlFormat.ListFillRange: Liste öğelerinin alındığı aralık.
    • ControlFormat.ListIndex: Listede seçili öğenin sıra numarası.
    • ControlFormat.Min, Max, SmallChange: Kaydırma çubuğu ve çevirme düğmesi sınırları.
    • OLEObject.LinkedCell: ActiveX denetimlerinin bağlı hücre özelliği.
    • Geliştirici > Ekle > Form Denetimleri (Developer > Insert > Form Controls): Denetimleri arayüzden ekleme yolu.
    • İNDİS: Sıra numarasına göre listeden değer getiren işlev.
    • EĞER: Bağlı hücredeki DOĞRU ya da YANLIŞ değerine göre sonuç üreten işlev.
Ö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