Excel Hücresi Değiştiğinde Makro - Excel İpuçları

İçindekiler

Birkaç okuyucu, Excel'in Excel elektronik tablosundaki bir değer her değiştiğinde bir makro bölümü çalıştırmasını gerektiren sorular sordu.

İlk olarak, iyileştirilmiş yöntem yalnızca XL97'de mevcuttur: Excel 97, bir hücre her değiştiğinde bir makronun çalıştırılmasına izin veren bazı yeni olay işleyicilerine sahiptir.

Diyelim ki, A sütununa 100'den büyük bir değer girildiğinde, yanındaki hücreyi kırmızı olacak şekilde biçimlendirmek istiyorsunuz.

  • Visual Basic Düzenleyicisi'ni açın (Araçlar> Makro> Visual Basic Düzenleyicisi)
  • Sol pencerede, Sayfa1'e sağ tıklayın ve Kodu Görüntüle'yi seçin.
  • Book1 - Sheet1 Code iletişim kutusunun üstünde iki açılır menü vardır. Soldaki açılır menüden Çalışma Sayfası'nı seçin. Sağdaki açılır menüden Değiştir'i seçin.
  • Aşağıdaki kod satırlarını girin:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 1 Then ThisRow = Target.Row If Target.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Hücredeki bir değer her değiştirildiğinde, bu makro çalıştırılacaktır. Hedef değişkeni size hangi hücreyi ve hücrenin yeni değerini söyleyecektir. Şaşırtıcı bir şekilde, bu yöntemi kullanmak süreci önemli ölçüde yavaşlatmaz.

Çalışma sayfası açık olduğu sürece veya içinde aşağıdaki satır bulunan bir makro çalıştırana kadar makronun etkin kalacağını unutmayın:

Application.EnableEvents = False

/ p> Excel 95 / 7.0'da: OnEntry yöntemini kullanmanız gerekir. Herhangi bir değer girildikten sonra çalıştırılmasını istediğiniz bir makroyu belirtirsiniz. Bu durumda, Application.Caller değişkeni, değişen adresi ve değeri içerir. Aşağıdakileri yeni bir modüle girin:

Sub AutoOpen() Worksheets("Sheet1").OnEntry = "CheckIt" End Sub Sub CheckIt() If Application.Caller.Column = 1 Then ThisRow = Application.Caller.Row If Application.Caller.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Aşağıdaki kodla bir makro çalıştırana kadar Giriş denetimi etkin kalacaktır:

Worksheets("Sheet1").OnEntry = False

Ilginç makaleler...