Excel VBA'da Uygulama Düzeyinde Olaylar Nasıl Oluşturulur

İçindekiler:

Anonim

Uygulama düzeyindeki olaylar uygulamanın tamamında çalışır (bu referansta Excel). Ancak uygulama olayını etkinleştirmek, Çalışma Kitabı veya Çalışma Sayfası Olayları oluşturmak kadar kolay değildir. Ama sizi temin ederim ki o kadar da zor değil. Bu yazıda, Excel VBA'da Application Event'in nasıl oluşturulacağını ve kullanılacağını birkaç kolay adımda öğreneceğiz.

Adım 1: Bir Sınıf Modülünde Bir Olay Nesnesi Oluşturun

Bir olay nesnesi oluşturmak için sınıf modülünü kullanmamız gerekir.

  • Bir sınıf modülü ekleyin. İstediğiniz gibi adlandırın. Adını MyAppEvents koydum.
  • WithEvents anahtar sözcüğüyle Uygulama türünde bir olay değişkeni tanımlayın.
    Uygulama Olarak MyApp WithEvents Özel
  • Bu olayı class_initialize() alt yordamında başlatın.
    Soldaki açılır menüden sınıfı seçin. Daha sonra, sağ üstteki açılır menüden başlat'ı seçin.

    Private Sub Class_Initialize() Set myApp = Application End Sub
  • Şimdi kullanmak istediğiniz olayları tanımlayın. Sol üstteki açılır menüden olay nesnesini seçin. Mevcut tüm olay işleme prosedürleri, sağ üstteki açılır menüde size sunulacaktır. Hangisine ihtiyacınız varsa seçin ve o olay tetiklendiğinde ne yapmak istediğinizi tanımlayın.
    SheetActivate Event'i kullanıyorum. Bir kullanıcı herhangi bir açık çalışma kitabının sayfaları arasında geçiş yaptığında, çalışma kitabının adını ve kullanıcının seçtiği sayfayı gösterecektir.

    Private Sub myApp_SheetActivate(ByVal Sh As Object) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub 

Burada tanımlamak istediğiniz kadar olay tanımlayabilirsiniz.

Olaylar hemen çalışmaya başlamaz. Bu ilk adımdı. Bir sınıf modülü olduğu için, olayları aktif hale getirmek için bir nesne oluşturmamız gerekiyor.

Şimdi sadece bu olayları normal bir alt programdan başlatmamız gerekiyor.

Adım 2: Normal Modülde Bir Olay Başlatıcı Altyordamı Oluşturun

Şimdi bir etkinlik sınıfımız var. Sadece o sınıftan bir nesne yaratmamız ve onu başlatmamız gerekiyor. Bu alt yordamı çalıştırdığımızda, olay sınıfındaki tüm tanımlanmış olaylar çalışmaya başlayacaktır.

  • Normal bir modül takın.
  • Oluşturduğunuz sınıfın bir değişkenini tanımlayın.
    MyAppEvents Olarak Özel AppE
  • Bir alt programda başlatın. İstediğiniz gibi adlandırabilirsiniz.
    Private Sub StartEvents() Set AppE = New MyAppEvents End Sub
  • Bu kodu F5 tuşunu kullanarak çalıştırın. İsteğe bağlı olarak, olayları çalışma sayfasından başlatmak istiyorsanız bu makroyu çalışma sayfasındaki düğmeye atayabilirsiniz.

Ve yapılır. Artık sayfaları değiştireceğiniz zaman, çalışma kitabını içeren kod açık olduğu sürece, çalışma kitabının ve sayfanın adını içeren bir mesaj kutusu görünecektir.

Zor muydu? sanmıyorum. Aşağıdaki yorum bölümünde ne düşündüğünüzü bana bildirin.

VBA Uygulama Olaylarını Açma ve Kapatma

Normal modülde makroyu çalıştırdığınızda, olayları içeren çalışma kitabını kapatana kadar her zaman tetiklenir. Ancak, bunları istediğiniz gibi açıp kapatmalarını isteyebilirsiniz. Bunu yapmanın iki yolu vardır.

  • Olay Nesnesini İptal Et
  • EnableEvents'i False olarak ayarlayın

1. Olay Nesnesini İptal Etme

Ayrı bir alt yordamda, olay nesnesini Hiçbir Şey olarak ayarlayın.

Private Sub StopEvents() Set AppE = Hiçbir Şey End Sub

Bu kodu çalıştırdığınızda, olaylar çalışmayı durduracaktır. Olayları durdurmak için bunu çalışma sayfasındaki bir düğmeye koyabilirsiniz. Şimdi bu belirli olayları başlatmak ve durdurmak için iki düğmeniz olacak. Sadece AppE nesnesi tarafından oluşturulan olayları durduracaktır.

2. EnableEvents'i False olarak ayarlayın

İkinci yöntem, olayları devre dışı bırakmaktır. Tüm olayları yakalanamaz hale getirmek için Application sınıfının EnableEvents özelliğini şu şekilde ayarladık: YANLIŞ.

Private Sub StopEvents() Application.EnableEvents= False End Sub

Yukarıdaki kod tüm olayları devre dışı bırakacaktır. Varsayılan excel olayları bile. Siz onları yeniden başlatana kadar çalışmayacaklar. StartEvents() alt yordamını (yukarıda) çalıştırsanız bile, olay çalışmayacaktır. Tüm olayların yeniden çalışmasını sağlamak için EnableEvents özelliğini tekrar True olarak ayarlamanız gerekir.

Bu nedenle, etkinlikleri her başlattığınızda etkinliklerinizin çalışmasını istiyorsanız, bu kod satırını alt bölüme ekleyin.

Private Sub StartEvents() Application.EnableEvents = True Set AppE = New MyAppEvents End Sub

Çalışma Kitabı Her Açıldığında Özel Uygulama Olaylarını Başlatma

Son kullanıcı için bir araç geliştiriyorsanız, olayların otomatik olarak çalışmasını isteyebilirsiniz. Bu durumda olay başlatıcıyı normal bir modül yerine Workbook_open() olayı ile Workbook nesnesine koyabilirsiniz. Bu, olayları içeren çalışma kitabını açar açmaz olay nesnenizin başlatılmasını sağlar.

Evet arkadaşlar, excel'de uygulama olayını bu şekilde kullanabilirsiniz. Bunun yeterince açıklayıcı olup olmadığını ve aşağıdaki yorumlar bölümünde Excel VBA'daki Uygulama Düzeyindeki Olayları anlamanıza yardımcı olup olmadığını bana bildirin. Buna ekleyeceğiniz bir şey varsa onu da yazın. Bu makale veya başka bir excel VBA ile ilgili konu ile ilgili sorularınızı aşağıdaki yorumlar bölümünde sorabilirsiniz.

Aşağıdaki çalışma dosyasını indirin:

Excel VBA'daki Olaylar | Excel'de yedi tür Etkinlik vardır. Her olay farklı kapsamda ele alınır. Uygulama Olayı, çalışma kitabı düzeyinde ilgilenir. Sayfa düzeyinde çalışma kitabı. Aralık düzeyinde Çalışma Sayfası Etkinliği.

Excel VBA'daki Çalışma Sayfası Olayları|Çalışma sayfası olayı, sayfada belirli bir olay meydana geldiğinde makrolarınızın çalışmasını istediğinizde gerçekten kullanışlıdır.

Microsoft Excel'de VBA kullanan çalışma kitabı olayları | Çalışma kitabı olayları, çalışma kitabının tamamında çalışır. Tüm sayfalar çalışma kitabının bir parçası olduğundan, bu olaylar onlarda da çalışır.

Microsoft Excel'de VBA kullanarak bir otomatik makro/olay makro yürütmesini önleme| auto_open makrosunun çalışmasını önlemek için shift tuşunu kullanın.

Microsoft Excel'de VBA kullanarak nesne olaylarını grafikleyin| Grafikler karmaşık nesnelerdir ve onlara eklediğiniz birkaç bileşen vardır. Grafik Olaylarını yapmak için Sınıf modülünü kullanıyoruz.

Popüler Makaleler:

Verimliliğinizi Artıracak 50 Excel Kısayolu | Görevinizde daha hızlı olun. Bu 50 kısayol, çalışmanızı Excel'de daha da hızlandıracak.

Excel'de DÜŞEYARA İşlevi | Bu, farklı aralıklardan ve sayfalardan değer aramak için kullanılan excel'in en çok kullanılan ve popüler işlevlerinden biridir.

Excel 2016'da EĞERSAY | Bu şaşırtıcı işlevi kullanarak değerleri koşullarla sayın. Belirli bir değeri saymak için verilerinizi filtrelemeniz gerekmez. Gösterge tablonuzu hazırlamak için Countif işlevi gereklidir.

Excel'de SUMIF İşlevi Nasıl Kullanılır | Bu, başka bir gösterge panosu temel işlevidir. Bu, belirli koşullardaki değerleri özetlemenize yardımcı olur.