Makro/VBA snippet'inizi belirli bir çalışma kitabı seçildiğinde, Çalışma kitabında bir sayfa seçildiğinde, hücrenin değerini değiştirdiğinde, çift tıklama olduğunda, bir sayfa eklendiğinde, vb. çalıştırmak isteyebilirsiniz. Çalışma Kitabı Olay İşleyicisi. Olay İşleyici, belirli bir olay meydana geldiğinde VBA kodunu çalıştırmamıza yardımcı olur.
Bu makalede, her bir Çalışma Kitabı Olay İşleyicisi hakkında kısaca öğreneceğiz.
Çalışma Kitabı Olay İşleyicisi nedir?
Çalışma kitabı olay işleyicisi, çalışma kitabında yerel olan bir alt yordamdır. Bu kodlar yalnızca bir çalışma kitabının bileşenleri üzerinde çalışır. Bu çalışma kitabının kendisi, sayfaları ve aralıkları.
Çalışma Kitabı Olay İşleyici Kodu nereye yazılır?
Çalışma kitabı olayları yalnızca çalışma kitabı nesnesine yazılır. Normal bir modülde bir çalışma kitabı olayı yazarsanız, hata olmaz ancak çalışmazlar.
Çalışma kitabı nesnesine yazmak için. Üzerine çift tıklayın veya sağ tıklayın ve görünüm koduna tıklayın. Kod yazma alanı gösterilecektir.
Çalışma kitabında belirli bir olay için kod nasıl yazılır?
Şimdi düzenleme modundayken, sol üst köşedeki açılır menüde genel seçeneğini göreceksiniz. Açılır menüye tıklayın ve çalışma kitabını seçin. Sağ üst köşedeki açılır menüde tüm etkinlikler gösterilecektir. Hangisine ihtiyacınız varsa onu seçin ve o olay için bir iskelet kodu sizin için yazılacaktır.
Her olayın sabit bir prosedür adı vardır. Bunlar, workbook_ ile başlayan ayrılmış alt yordam adlarıdır. Bunları diğer alt programlar için kullanamazsınız.
(yapabilirsiniz, ancak bunlar normal altyordamlar olacaktır).
Önemli: Bu listedeki her alt program belirtilen olay üzerinde çalışacaktır.
Bir tür çalışma kitabı olay prosedürü, bir çalışma kitabına yalnızca bir kez yazılabilir. Bir çalışma kitabında aynı iki olay işleme prosedürünü yazarsanız, bu bir hataya neden olur ve hiçbiri yürütülmez. Tabii ki, hata belirsiz altyordamlar olacaktır.
Olayların her biri hakkında kısaca bilgi edinelim.
1. NS Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Etkinlik
Bu olay, içeren çalışma sayfalarında herhangi bir değişiklik yaptığımızda tetiklenir (biçimlendirme hariç). Herhangi bir sayfada herhangi bir değişiklik yapılırsa bir şeyler yapmak istiyorsanız, kod şöyle olacaktır:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 'bir şey yap Msgbox "bir şey yaptı" End Sub
"Sh" her zaman etkin sayfadır. "Hedef" her zaman Aktif hücredir.
Başka bir örnek: A1 değişirse tarih ve saati Cel,prl B1'e koymak isteyebilirsiniz. Bu durumda workbook_sheetchange olayını kullanırız. Kod şöyle görünecektir:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Range("B1").Value2 = Format(Now(), "sh:dd:ss") End If Alt Bitiş
Bu, "sh" nesnesini belirtmediğimiz için her sayfada yalnızca A1 hücresini hedefleyecektir.
2. NS Workbook_Activate() Etkinlik
Bu olay, çalışma kitabını içeren olay kodu etkinleştirildiğinde tetiklenir. Bu olayın iskelet kodu:
Private Sub Workbook_Activate() End Sub
Basit bir örnek, seçildiğinde çalışma kitabı adını gösteriyor.
Private Sub Workbook_Activate() MsgBox "Çalışma kitabındasınız" & Activeworkbook.Name End Sub
Bu kodu içeren çalışma kitabına gelir gelmez olay çalışacak ve "Çalışma kitabı adındasınız" mesajı gösterilecektir (benim durumumda sayfa 2).
3. NS Workbook_Open() Etkinlik
Bu, çalışma kitabı açılır açılmaz bir makronun nasıl çalıştırılacağı konusunda en çok sorulan sorulardan biridir. İşte cevap. Bu çalışma kitabı olayı, çalışma kitabı açılır açılmaz çalıştırılır. Workbook_Activate()'den farklı olarak bu kod, her etkinleştirildiğinde değil, yalnızca bir kez çalışır.
Private Sub Workbook_Open() 'kodunuz' End Sub
Aşağıdaki örnek Workbook_Open olayı, çalışma kitabını içeren kodu açtığınızda bir karşılama mesajı açacaktır.
Private Sub Workbook_Open() MsgBox "Ana Dosyaya Hoş Geldiniz" End Sub
4. NS Workbook_Deactivate() Etkinlik
Bu olay, çalışma kitabını içeren koddan ayrılırken tetiklenir. Başka bir deyişle, çalışma kitabını değiştirdiğinizde sayfaları gizleme veya herhangi bir şey gibi bir şey yapmak istiyorsanız, bu VBA olayını kullanın. Sözdizimi:
Private Sub Workbook_Deactivate() 'kodunuz' End Sub
Aşağıdaki örnek Workbook_Deativate olayı, bu sayfadan ayrılacağınız zaman ana sayfadan ayrıldığınıza dair bir mesaj açacaktır.
Private Sub Workbook_Deactivate() MsgBox "Ana Sayfayı Bıraktınız" End Sub
5. NS Workbook_BeforeClose() Etkinlik
Bu olay, sayfa içeren VBA olayının silinmesini onayladığınızda tetiklenir. Sözdizimi basittir:
Private Sub Workbook_BeforeClose(Boolean olarak iptal et) End Sub
Çalışma kitabını açık tutmak istiyorsanız, İptal true olarak ayarlanabilir.
Aşağıdaki kod, kapanmak üzere olan çalışma kitabının içeriğini kaydetmek isteyip istemediğinizi soracaktır.
Private Sub Workbook_BeforeClose(Boolean olarak iptal et) ans = MsgBox("Bu çalışma kitabının içeriğini kaydetmek istiyor musunuz?", vbYesNo) If ans = True Then thisworkbook.save End If End Sub
6. NS Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Etkinlik
Bu olay, çalışma kitabı kaydedilmeden önce tetiklenir. Sözdizimi basittir:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Çalışma kitabında bir değişiklik varsa (VBA'da değil) SaveAsUI True olarak ayarlanır.
Çalışma kitabını kaydedilmemiş halde tutmak istiyorsanız, İptal doğru olarak ayarlanabilir.
Aşağıdaki kod, kaydedilmek üzere olan çalışma kitabının içeriğini kaydetmek isteyip istemediğinizi soracaktır.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel as Boolean) ans = MsgBox("Bu çalışma kitabının içeriğini gerçekten kaydetmek istiyor musunuz?", vbYesNo) If ans = False Then Cancel = True End If End Sub
7. NS Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Etkinlik
Bu olay, çalışma kitabı kaydedilmeden önce tetiklenir. Sözdizimi basittir:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Çalışma kitabında bir değişiklik varsa (VBA'da değil) SaveAsUI True olarak ayarlanır.
Çalışma kitabını kaydedilmemiş halde tutmak istiyorsanız, İptal true olarak ayarlanabilir.
Aşağıdaki kod, kaydedilmek üzere olan çalışma kitabının içeriğini kaydetmek isteyip istemediğinizi soracaktır.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel as Boolean) ans = MsgBox("Bu çalışma kitabının içeriğini gerçekten kaydetmek istiyor musunuz?", vbYesNo) If ans = False Then Cancel = True End If End Sub
8. NS Workbook_NewSheet(ByVal Sh As Object) Etkinlik
Bu olay, çalışma kitabına yeni bir sayfa eklediğinizde tetiklenir. Sözdizimi basittir:
Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub
Sh, sayfa nesnesidir. Tür aslında bir çekirdek nesnedir, böylece bir grafik sayfası, bir makro sayfası veya bir iletişim sayfası eklersek olay çalışmaya devam eder.
Aşağıdaki kod, yeni eklenen sayfanın adını ekleyecek ve gösterecektir.
Private Sub Workbook_NewSheet(ByVal Sh As Object) MsgBox "Yeni bir sayfa eklediniz." & Sh.Name End Sub
Bunlar, çalışma kitabı nesnesinin daha birçok olayıdır. Hepsini burada tartışamayız. Belirli bir olay hakkında bilgi edinmek istiyorsanız, aşağıdaki yorumlar bölümünde sorun. Umarım bu makalede çalışma kitabı olaylarının temellerini açıklayabilmişimdir. Aşağıdaki yorumlar bölümünde size yardımcı olup olmadığını bana bildirin.
İlgili Makaleler:
Herhangi Bir Değişiklik Yapıldığında Makroyu Çalıştırmak İçin Çalışma Sayfası Değişiklik Olayını Kullanma | Bu nedenle, sayfa her güncellendiğinde makronuzu çalıştırmak için VBA'nın Çalışma Sayfası Olaylarını kullanıyoruz.
Sayfada Belirlenen Aralıkta Değişiklik Yapılırsa Makroyu Çalıştır | Belirtilen aralıktaki değer değiştiğinde makro kodunuzu çalıştırmak için bu VBA kodunu kullanın. Belirtilen aralıkta yapılan herhangi bir değişikliği algılar ve olayı başlatır.
Geçerli Satırı ve Sütunu Kullanarak Vurgulamak için En Basit VBA Kodu | Sayfanın geçerli satırını ve sütununu vurgulamak için bu küçük VBA parçacığını kullanın.
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.