Özellik ikonu

ActiveCell

İndirme izni yok

Genel Bakış

ActiveCell (Application.ActiveCell), etkin pencerede etkin sayfadaki etkin hücreyi temsil eden bir Range nesnesi döndüren salt okunur bir özelliktir. Etkin hücre, o anda veri girişine hazır olan ve ad kutusunda adresi görünen hücredir. Makrolarda kullanıcının bulunduğu hücreden başlayarak değer okumak, yazmak ve komşu hücrelere geçmek için kullanılır.

Söz dizimi​

ActiveCell özelliği Application nesnesine aittir. Genellikle Application öneki yazılmadan doğrudan kullanılır:
VBA 5 satır
ifade.ActiveCell
' Örnekler:
ActiveCell.Value = 100
Application.ActiveCell.Value = 100
Windows(1).ActiveCell.Address
  • ifade: İsteğe bağlıdır. Bir Application ya da Window nesnesi olabilir. Yazılmazsa etkin penceredeki etkin hücre döndürülür.
  • Parametre: Özelliğin parametresi yoktur; yalnız okunabilir, ActiveCell'e doğrudan bir hücre atanamaz. Etkin hücreyi değiştirmek için Select ya da Activate yöntemi kullanılır.

Dönüş değeri ve çalışma mantığı​

Özellik tek hücrelik bir Range nesnesi döndürür. Bu nedenle Range nesnesinin tüm özellik ve yöntemlerini kullanabilirsiniz.
  • Etkin sayfa: ActiveCell her zaman etkin çalışma kitabındaki etkin sayfaya bağlıdır. Başka bir sayfadaki hücre etkin hücre sayılmaz; önce o sayfayı Activate ile etkinleştirmeniz gerekir.
  • Hata durumu: Etkin pencere bir çalışma sayfası göstermiyorsa (örneğin grafik sayfası etkinse) özellik hata verir.
  • Varsayılan özellik: Range nesnesinin varsayılan özelliği Value olduğundan ActiveCell = 5 de çalışır; ancak okunabilirlik için ActiveCell.Value yazmanız önerilir.

ActiveCell ve Selection farkı​

Birden çok hücre seçildiğinde Selection seçilen tüm aralığı, ActiveCell ise bu aralık içindeki tek etkin hücreyi (genellikle seçimi başlatılan, beyaz görünen hücre) verir. Tek hücre seçiliyken ikisi aynı hücreyi gösterir. Fare ile seçilen alanda çalışacaksanız Selection, imlecin bulunduğu hücreden hareket edeceksiniz ActiveCell kullanın.

Sık kullanılan üyeler​

ActiveCell bir Range olduğundan şu üyeler sık kullanılır:
  • Value: Hücrenin değerini okur ya da yazar.
  • Formula: Hücrenin formülünü okur ya da yazar.
  • Address: Hücre adresini metin olarak döndürür; Address(False, False) göreli adres (C4) verir.
  • Row ve Column: Hücrenin satır ve sütun numarasını döndürür.
  • Offset: Etkin hücreye göre kaydırılmış hücreye ulaşır; Offset(1, 0) bir alt satırı belirtir.
  • EntireRow ve EntireColumn: Hücrenin bulunduğu satırın ya da sütunun tamamını verir.
  • CurrentRegion: Hücreyi çevreleyen bitişik veri bloğunu verir.
  • End: Ctrl+Ok tuşu gibi veri bloğunun sonuna gider; ActiveCell.End(xlDown) örnektir.

1. Veri bitene kadar satır satır ilerleme​

Stok listesinde Adet ve Birim Fiyat sütunları dolu, Tutar sütunu boştur. Makro ilk ürün hücresini seçer, etkin hücre boş olana kadar tutarı hesaplar ve her turda bir alt satıra geçer. Kodu standart bir modüle yapıştırın.
VBA 14 satır
Option Explicit

Sub TutarHesapla()
    ' Stok sayfasını etkinleştirip ilk ürün hücresini seçer
    Worksheets("Stok").Activate
    Range("A2").Select
    ' Etkin hücre boş olana kadar devam eder
    Do While ActiveCell.Value <> ""
        ' Adet (B) x Birim Fiyat (C) sonucunu D sütununa yazar
        ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 1).Value * ActiveCell.Offset(0, 2).Value
        ' Bir alt satıra geçer
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
ActiveCell
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünAdetBirim FiyatTutar
2Kalem2012,50250,00
3Defter5018,00900,00
4Silgi1203,75450,00
5Dosya3522,40784,00
6Klasör1545,00675,00
StokExcelDepo v1.0.0
Makro her ürün satırı için etkin hücreyi bir alt satıra taşır. Kalem için hesaplanan tutar 250,00, Defter için 900,00 olur. Döngü, etkin hücre ilk boş ürün hücresine geldiğinde sona erer; böylece sonsuz döngü oluşmaz.

2. Etkin hücre hakkında bilgi alma​

Makro Personel sayfasında C4 hücresini seçer, etkin hücrenin adres, satır ve sütun bilgisini yanındaki Bilgi hücresine yazar, hücreyi sarıya boyar ve satırı kalın yapar. Kodu standart bir modüle yapıştırın.
VBA 12 satır
Option Explicit

Sub EtkinHucreBilgisi()
    Worksheets("Personel").Activate
    Range("C4").Select
    ' Etkin hücreyi sarıya boyar
    ActiveCell.Interior.Color = RGB(255, 255, 0)
    ' Adres, satır ve sütun bilgisini sağdaki hücreye yazar
    ActiveCell.Offset(0, 1).Value = "Adres " & ActiveCell.Address(False, False) & ", satır " & ActiveCell.Row & ", sütun " & ActiveCell.Column
    ' Etkin hücrenin bulunduğu satırı kalın yapar
    ActiveCell.EntireRow.Font.Bold = True
End Sub
ActiveCell
Formülünü incelemek için bir hücre seçin.
ABCD
1PersonelDepartmanMaaşBilgi
2Ahmet YılmazMuhasebe28.500,00
3Elif Demirİnsan Kaynakları31.000,00
4Mehmet KayaSatış26.750,00Adres C4, satır 4, sütun 3
5Selin AydınBilgi İşlem35.200,00
PersonelExcelDepo v1.0.0
Makro çalıştıktan sonra D4 hücresinde şu bilgi görünür: Adres C4, satır 4, sütun 3. Address(False, False) mutlak işaretleri ($) kaldırdığı için adres göreli biçimde yazılır. Mehmet Kaya'nın maaş hücresi sarıya boyanır ve satırın tamamı kalın olur.

3. Seçim değişince ActiveCell ile not durumu yazma​

Bu örnekte kod, örnek sayfanın kod modülüne yazılan Worksheet_SelectionChange olayındadır: sayfa adı sekmesine sağ tıklayın, Kodu Görüntüle (View Code) seçin ve kodu oradaki pencereye yapıştırın. B ya da C sütunundaki bir not hücresi seçildiğinde, etkin hücrenin değerine göre aynı satırın D sütununa durum yazılır.
VBA 16 satır
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' Birden çok hücre seçildiyse işlem yapmaz
    If Target.Cells.Count > 1 Then Exit Sub
    ' Yalnız 2. satırdan itibaren B ve C sütunlarında çalışır
    If ActiveCell.Row < 2 Or ActiveCell.Column < 2 Or ActiveCell.Column > 3 Then Exit Sub
    ' Boş hücrede işlem yapmaz
    If ActiveCell.Value = "" Then Exit Sub
    ' Etkin hücredeki nota göre durumu yazar
    If ActiveCell.Value >= 50 Then
        Cells(ActiveCell.Row, 4).Value = "Geçti"
    Else
        Cells(ActiveCell.Row, 4).Value = "Kaldı"
    End If
End Sub
ActiveCell
Formülünü incelemek için bir hücre seçin.
ABCD
1ÖğrenciMatematikFizikDurum
2Ayşe Çelik7885
3Mehmet Kaya4560Kaldı
4Zeynep Arslan9270
5Ali Öztürk3855
NotlarExcelDepo v1.0.0
Tetikleyici makro B3 hücresini seçince olay çalışır. Etkin hücredeki not 50'nin altında olduğu için D3 hücresine Kaldı yazılır. Olay yordamı kendi yazdığı D sütununu seçmediğinden kendini yeniden tetiklemez.

Kullanırken dikkat edin​

  • Select kullanımını azaltın: ActiveCell yalnız bir hücre seçildiğinde anlamlıdır; bu yüzden makrolarda sık sık Select gerekir. Seçim yapmak yavaştır ve ekranı hareketlendirir. Kullanıcının bulunduğu yerden bağımsız çalışacak kodlarda Worksheets("Stok").Range("A2") gibi doğrudan başvuru kullanmak daha hızlı ve güvenlidir. ActiveCell'i yalnızca kullanıcının seçtiği hücreye göre davranacak makrolarda tercih edin.
  • Etkin sayfayı kontrol edin: ActiveCell her zaman etkin çalışma kitabının etkin sayfasındadır. Makro başka bir sayfadayken çalışırsa yanlış sayfada işlem yapabilirsiniz. Gerekirse önce Worksheets("Sayfa adı").Activate yazın. Etkin pencere grafik sayfası gösteriyorsa ActiveCell hata verir.
  • Worksheet nesnesinin ActiveCell özelliği yoktur: ActiveCell, Application ve Window nesnelerinin özelliğidir; Worksheets("Stok").ActiveCell gibi bir kullanım yoktur. Belirli bir sayfadaki seçili hücre için önce o sayfayı etkinleştirip ActiveCell kullanın.
  • Boş hücrede kontrol yapın: Do While ActiveCell.Value <> "" gibi döngülerde veri bloğunun sonunda boş hücre olduğundan emin olun; aksi halde döngü beklenenden fazla çalışır. Ara satırları boş olan listelerde döngü ilk boşlukta durur. Sonu belli olmayan listelerde End(xlDown) ya da son satır bulma yöntemlerini kullanın.
  • Olaylarda Target ile ActiveCell farkı: Worksheet_SelectionChange olayında Target seçilen aralığı, ActiveCell etkin hücreyi gösterir. Birden çok hücre seçiliyken ikisi farklı olabilir. Olay yordamı içinde hücrelere yazarken başka bir olayı tetikleme riskini düşünün; gerekirse Application.EnableEvents özelliğini geçici olarak False yapın.
  • İlgili konular:
    • Selection özelliği
    • Range ve Cells nesneleri
    • Offset özelliği
    • End özelliği ve CurrentRegion özelliği
    • Select ve Activate yöntemleri
    • ActiveSheet ve ActiveWindow özellikleri
    • Worksheet_SelectionChange olayı
    • SATIR ve SÜTUN işlevleri
Ö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