Excel VBA Etkinlikleri - Kolay (ve Eksiksiz) Bir Kılavuz

Excel'de bir makro oluşturduğunuzda veya kaydettiğinizde, koddaki adımları yürütmek için makroyu çalıştırmanız gerekir.

Makro çalıştırmanın birkaç yolu, makro iletişim kutusunu kullanmayı, makroyu bir düğmeye atamayı, kısayol kullanmayı vb. içerir.

Bu kullanıcı tarafından başlatılan makro yürütmelerin yanı sıra, makroyu çalıştırmak için VBA olaylarını da kullanabilirsiniz.

Excel VBA Olayları - Giriş

Önce VBA'da bir olayın ne olduğunu açıklayayım.

Olay, belirtilen makronun yürütülmesini tetikleyebilen bir eylemdir.

Örneğin, yeni bir çalışma kitabı açtığınızda bu bir olaydır. Yeni bir çalışma sayfası eklediğinizde bu bir olaydır. Bir hücreye çift tıkladığınızda, bu bir olaydır.

VBA'da bu tür birçok olay vardır ve bu olaylar için kodlar oluşturabilirsiniz. Bu, bir olay meydana gelir gelmez ve o olay için bir kod belirlediyseniz, o kodun anında yürütüleceği anlamına gelir.

Excel, bir olayın gerçekleştiğini fark eder etmez bunu otomatik olarak yapar. Bu nedenle, yalnızca kodu yazmanız ve doğru olay alt yordamına yerleştirmeniz gerekir (bu, bu makalenin ilerleyen bölümlerinde ele alınacaktır).

Örneğin, yeni bir çalışma sayfası eklerseniz ve bunun bir yıl öneki olmasını istiyorsanız, bunun kodunu yazabilirsiniz.

Şimdi, ne zaman biri yeni bir çalışma sayfası eklese, bu kod otomatik olarak yürütülecek ve çalışma sayfasının adına yıl önekini ekleyecektir.

Başka bir örnek, birisi üzerine çift tıkladığında hücrenin rengini değiştirmek istemeniz olabilir. Bunun için çift tıklama olayını kullanabilirsiniz.

Benzer şekilde, bu tür birçok olay için VBA kodları oluşturabilirsiniz (bu makalenin ilerleyen bölümlerinde göreceğimiz gibi).

Aşağıda, çift tıklama olayını çalışırken gösteren kısa bir görsel bulunmaktadır. A1 hücresine çift tıkladığımda. Excel anında hücrenin adresini gösteren bir mesaj kutusu açar.

Çift tıklama bir olaydır ve mesaj kutusunun gösterilmesi, çift tıklama olayı gerçekleştiğinde kodda belirttiğim şeydir.

Yukarıdaki örnek gereksiz bir olay olsa da, umarım olayların gerçekte ne olduğunu anlamanıza yardımcı olur.

Farklı Excel VBA Olayları Türleri

Excel'de farklı nesneler vardır - örneğin Excel'in kendisi (genellikle uygulama olarak adlandırırız), çalışma kitapları, çalışma sayfaları, çizelgeler vb.

Bu nesnelerin her biri, kendisiyle ilişkili çeşitli olaylara sahip olabilir. Örneğin:

  • Yeni bir çalışma kitabı oluşturursanız, bu uygulama düzeyinde bir olaydır.
  • Yeni bir çalışma sayfası eklerseniz bu, çalışma kitabı düzeyinde bir olaydır.
  • Sayfadaki bir hücredeki değeri değiştirirseniz, bu, çalışma sayfası düzeyinde bir olaydır.

Aşağıda, Excel'de bulunan farklı Etkinlik türleri bulunmaktadır:

  1. Çalışma Sayfası Seviyesi Olayları: Bunlar, çalışma sayfasında gerçekleştirilen eylemlere bağlı olarak tetiklenecek olay türleridir. Bu olaylara örnek olarak çalışma sayfasındaki bir hücreyi değiştirme, seçimi değiştirme, bir hücreye çift tıklama, bir hücreye sağ tıklama vb.
  2. Çalışma Kitabı Düzeyindeki Olaylar: Bu olaylar, çalışma kitabı düzeyindeki eylemlere dayalı olarak tetiklenir. Bu olaylara örnek olarak yeni bir çalışma sayfası ekleme, çalışma kitabını kaydetme, çalışma kitabını açma, çalışma kitabının bir kısmını veya tamamını yazdırma vb.
  3. Uygulama Seviyesi Etkinlikleri: Bunlar Excel uygulamasında meydana gelen olaylardır. Bunlara örnek olarak açık çalışma kitaplarından herhangi birinin kapatılması veya yeni bir çalışma kitabının açılması verilebilir.
  4. UserForm Seviyesi Olayları: Bu olaylar, "Kullanıcı Formu"ndaki eylemlere dayalı olarak tetiklenir. Bunlara örnek olarak bir UserForm'un başlatılması veya UserForm'daki bir düğmenin tıklanması dahildir.
  5. Grafik Olayları: Bunlar, grafik sayfasıyla ilgili olaylardır. Bir grafik sayfası, bir çalışma sayfasından farklıdır (çoğumuzun Excel'de çalıştığı yer burasıdır). Bir grafik sayfalarının amacı, bir grafiği tutmaktır. Bu tür olaylara örnek olarak, çizelge serisinin değiştirilmesi veya çizelgenin yeniden boyutlandırılması verilebilir.
  6. OnTime ve OnKey Olayları: Bunlar, yukarıdaki kategorilerin hiçbirine uymayan iki olaydır. Bu yüzden bunları ayrı ayrı listeledim. 'OnTime' olayı, belirli bir zamanda veya belirli bir süre geçtikten sonra bir kod yürütmenize olanak tanır. 'OnKey' olayı, belirli bir tuş vuruşu (veya tuş vuruşlarının bir kombinasyonu) kullanıldığında bir kod yürütmenize izin verir.

Olayla İlgili Kodu Nereye Koymalı

Yukarıdaki bölümde, farklı olay türlerini ele aldım.

Olayın türüne göre kodu ilgili nesneye koymanız gerekir.

Örneğin, çalışma sayfasıyla ilgili bir olaysa, çalışma sayfası nesnesinin kod penceresine girmelidir. Çalışma kitabıyla ilgiliyse, çalışma kitabı nesnesinin kod penceresine girmelidir.

VBA'da, Çalışma Sayfaları, Çalışma Kitapları, Grafik Sayfaları, Kullanıcı Formları vb. gibi farklı nesnelerin kendi kod pencereleri vardır. Olay kodunu ilgili nesnenin kod penceresine koymanız gerekir. Örneğin - bu çalışma kitabı düzeyinde bir olaysa, çalışma kitabı kodu penceresinde olay kodunun olması gerekir.

Aşağıdaki bölümler, olay kodunu koyabileceğiniz yerleri kapsar:

Çalışma Sayfası Kodu Penceresinde

VB Düzenleyicisini açtığınızda (ALT + F11 klavye kısayolunu kullanarak), Proje Gezgini'nde çalışma sayfaları nesnesini fark edeceksiniz. Çalışma kitabındaki her çalışma sayfası için bir nesne göreceksiniz.

Kodu yerleştirmek istediğiniz çalışma sayfası nesnesine çift tıkladığınızda, o çalışma sayfası için kod penceresi açılır.

Kodu sıfırdan yazmaya başlayabilirsiniz, ancak bir seçenekler listesinden olayı seçmek ve VBA'nın seçilen olay için ilgili kodu otomatik olarak eklemesine izin vermek çok daha iyidir.

Bunu yapmak için önce kod penceresinin sol üst köşesindeki açılır menüden çalışma sayfasını seçmeniz gerekir.

Açılır menüden çalışma sayfasını seçtikten sonra, çalışma sayfasıyla ilgili tüm olayların bir listesini alırsınız. Kod penceresinin sağ üst köşesindeki açılır menüden kullanmak istediğinizi seçebilirsiniz.

Etkinliği seçtiğiniz anda, seçilen etkinlik için kodun ilk ve son satırını otomatik olarak girecektir. Şimdi kodunuzu iki satır arasına ekleyebilirsiniz.

Not: Açılır menüden Çalışma Sayfası'nı seçtiğiniz anda, kod penceresinde iki satır kod göründüğünü fark edeceksiniz. Kodu istediğiniz olayı seçtikten sonra, varsayılan olarak görünen satırları silebilirsiniz.

Her çalışma sayfasının kendine ait bir kod penceresi olduğunu unutmayın. Sayfa1'in kodunu koyduğunuzda, yalnızca olay Sayfa1'de gerçekleşirse çalışır.

BuÇalışma Kitabı Kodu Penceresinde

Çalışma sayfaları gibi, çalışma kitabı düzeyinde bir olay kodunuz varsa, bunu ThisWorkbook kod penceresine yerleştirebilirsiniz.

ThisWorkbook'a çift tıkladığınızda, bunun için kod penceresini açacaktır.

Kod penceresinin sol üst köşesindeki açılır menüden Çalışma Kitabı'nı seçmeniz gerekir.

Açılır menüden Çalışma Kitabı'nı seçtikten sonra, Çalışma Kitabı ile ilgili tüm olayların bir listesini alırsınız. Kod penceresinin sağ üst köşesindeki açılır menüden kullanmak istediğinizi seçebilirsiniz.

Etkinliği seçtiğiniz anda, seçilen etkinlik için kodun ilk ve son satırını otomatik olarak girecektir. Şimdi kodunuzu iki satır arasına ekleyebilirsiniz.

Not: Açılır menüden Çalışma Kitabı'nı seçtiğiniz anda, kod penceresinde iki satır kod göründüğünü fark edeceksiniz. Kodu istediğiniz olayı seçtikten sonra, varsayılan olarak görünen satırları silebilirsiniz.

Kullanıcı Formu Kodu Penceresinde

Excel'de UserForms oluştururken, belirli eylemlere dayalı kodları yürütmek için UserForm olaylarını da kullanabilirsiniz. Örneğin, düğmeye tıklandığında yürütülecek bir kod belirtebilirsiniz.

VB Düzenleyicisini açtığınızda Sheet nesneleri ve ThisWorkbook nesneleri zaten mevcut olsa da, UserForm önce oluşturmanız gereken bir şeydir.

Bir UserForm oluşturmak için herhangi bir nesneye sağ tıklayın, Ekle'ye gidin ve UserForm'a tıklayın.

Bu, çalışma kitabına bir UserForm nesnesi ekler.

UserForm'a (veya UserForm'a eklediğiniz herhangi bir nesneye) çift tıkladığınızda, UserForm için kod penceresi açılır.

Şimdi, tıpkı çalışma sayfaları veya ThisWorkbook gibi, olayı seçebilirsiniz ve o olay için ilk ve son satırı ekleyecektir. Ve sonra kodu ortasına ekleyebilirsiniz.

Grafik Kodu Penceresinde

Excel'de, Grafik sayfaları da ekleyebilirsiniz (çalışma sayfalarından farklıdır). Bir grafik sayfasının yalnızca grafikleri içermesi amaçlanmıştır.

Bir grafik sayfası eklediğinizde, VB Editöründe Grafik sayfası nesnesini görebileceksiniz.

Olay kodunu, tıpkı çalışma sayfasında yaptığımız gibi grafik sayfası kod penceresine ekleyebilirsiniz.

Proje Gezgini'nde Grafik sayfası nesnesine çift tıklayın. Bu, grafik sayfası için kod penceresini açacaktır.

Şimdi, kod penceresinin sol üst kısmındaki açılır menüden Grafik'i seçmeniz gerekiyor.

Açılır menüden Grafik'i seçtikten sonra, Grafik sayfasıyla ilgili tüm olayların bir listesini alırsınız. Kod penceresinin sağ üst köşesindeki açılır menüden kullanmak istediğinizi seçebilirsiniz.

Not: Açılır menüden Grafik'i seçtiğiniz anda, kod penceresinde iki satır kod göründüğünü fark edeceksiniz. Kodu istediğiniz olayı seçtikten sonra, varsayılan olarak görünen satırları silebilirsiniz.

Sınıf Modülü

Sınıf Modüllerinin tıpkı UserForms gibi eklenmesi gerekir.

Bir sınıf modülü, uygulamayla ilgili kodu tutabilir - bu, Excel'in kendisi ve katıştırılmış çizelgeler olabilir.

Sınıf modülünü önümüzdeki haftalarda ayrı bir eğitim olarak ele alacağım.

OnTime ve OnKey olayları dışında, yukarıdaki olayların hiçbirinin normal VBA modülünde saklanamayacağını unutmayın.

Olay Sırasını Anlama

Bir olayı tetiklediğinizde, tek başına gerçekleşmez. Aynı zamanda birden fazla tetikleyici dizisine de yol açabilir.

Örneğin, yeni bir çalışma sayfası eklediğinizde aşağıdakiler olur:

  1. Yeni bir çalışma sayfası eklendi
  2. Önceki çalışma sayfası devre dışı bırakılır
  3. Yeni çalışma sayfası etkinleştirildi

Çoğu durumda, dizi hakkında endişelenmenize gerek olmayabilir, ancak olaylara dayanan karmaşık kodlar oluşturuyorsanız, beklenmedik sonuçlardan kaçınmak için diziyi bilmek daha iyidir.

VBA Olaylarında Argümanların Rolünü Anlamak

Etkinlik örneklerine ve bununla yapabileceğiniz harika şeylere geçmeden önce, üzerinde durmam gereken önemli bir kavram var.

VBA olaylarında iki tür kod olacaktır:

  • Herhangi bir argüman olmadan
  • argümanlarla

Ve bu bölümde, argümanların rolünü hızlıca ele almak istiyorum.

Aşağıda, içinde argüman olmayan bir kod verilmiştir (parantezler boştur):

Private Sub Workbook_Open() MsgBox "Zaman Çizelgesini Doldurmayı Unutmayın" End Sub

Yukarıdaki kodla, bir çalışma kitabını açtığınızda, “Zaman Çizelgesini doldurmayı unutmayın” mesajını içeren bir mesaj kutusu gösterir.

Şimdi argümanı olan bir koda bakalım.

Private Sub Workbook_NewSheet(ByVal Sh As Object) Sh.Range("A1") = Sh.Name End Sub

Yukarıdaki kod, bir nesne türü olarak tanımlanan Sh argümanını kullanır. Yeni bir sayfa eklendiğinde yukarıdaki olay tetiklendiğinden, Sh argümanı bir çalışma sayfası veya bir grafik sayfası olabilir.

VBA, çalışma kitabına eklenen yeni sayfayı Sh nesne değişkenine atayarak kodda kullanmamızı sağladı. Böylece yeni sayfa adına atıfta bulunmak için Sh.Name kullanabilirim.

Argüman kavramı, sonraki bölümlerde VBA olay örneklerini incelediğinizde faydalı olacaktır.

Çalışma Kitabı Düzeyindeki Olaylar (Örneklerle Açıklandı)

Aşağıda, bir çalışma kitabında en sık kullanılan olaylar verilmiştir.

ETKİNLİK İSMİ OLAYI TETİKLEYEN NEDİR
etkinleştir Bir çalışma kitabı etkinleştirildiğinde
Kaydettikten Sonra Bir çalışma kitabı eklenti olarak yüklendiğinde
Kaydetmeden Önce Bir çalışma kitabı kaydedildiğinde
ÖnceKapat Bir çalışma kitabı kapatıldığında
ÖnceBaskı Bir çalışma kitabı yazdırıldığında
Devre dışı bırakmak Bir çalışma kitabı devre dışı bırakıldığında
Yeni Sayfa Yeni bir sayfa eklendiğinde
Açık Bir çalışma kitabı açıldığında
SayfaEtkinleştir Çalışma kitabındaki herhangi bir sayfa etkinleştirildiğinde
SayfaÖnceSil Herhangi bir sayfa silindiğinde
SayfaÖnceDoubleClick Herhangi bir sayfa çift tıklandığında
SayfaÖnceSağTıklama Herhangi bir sayfa sağ tıklandığında
SayfaHesapla Herhangi bir sayfa hesaplandığında veya yeniden hesaplandığında
SayfaDevre dışı bırak Bir çalışma kitabı devre dışı bırakıldığında
SheetPivotTableUpdate Bir çalışma kitabı güncellendiğinde
Sayfa SeçimiDeğişikliği Bir çalışma kitabı değiştirildiğinde
Pencere Etkinleştir Bir çalışma kitabı etkinleştirildiğinde
PencereDevre Dışı Bırak Bir çalışma kitabı devre dışı bırakıldığında

Bunun tam bir liste olmadığını unutmayın. Tam listeyi burada bulabilirsiniz.

Çalışma Kitabı olay kodunun ThisWorkbook nesneleri kod penceresinde saklandığını unutmayın.

Şimdi bazı yararlı çalışma kitabı etkinliklerine bir göz atalım ve bunların günlük işlerinizde nasıl kullanılabileceğini görelim.

Çalışma Kitabı Açık Etkinliği

Kullanıcıya, belirli bir çalışma kitabını açtıklarında zaman çizelgelerini doldurmaları için kolay bir hatırlatıcı göstermek istediğinizi varsayalım.

Bunu yapmak için aşağıdaki kodu kullanabilirsiniz:

Private Sub Workbook_Open() MsgBox "Zaman Çizelgesini Doldurmayı Unutmayın" End Sub

Şimdi bu kodu içeren çalışma kitabını açar açmaz, size belirtilen mesajı içeren bir mesaj kutusu gösterecektir.

Bu kodla (veya genel olarak Çalışma Kitabı Olayı kodlarıyla) çalışırken bilinmesi gereken birkaç şey vardır:

  • Bir çalışma kitabında makro varsa ve onu kaydetmek istiyorsanız, onu .XLSM biçiminde kaydetmeniz gerekir. Aksi takdirde makro kodu kaybolur.
  • Yukarıdaki örnekte, olay kodu yalnızca makrolar etkinleştirildiğinde yürütülür. Makroları etkinleştirmek için izin isteyen sarı bir çubuk görebilirsiniz. Bu etkinleştirilene kadar olay kodu yürütülmez.
  • Çalışma Kitabı olay kodu, ThisWorkbook nesnesinin kod penceresine yerleştirilir.

Bu kodu daha da hassaslaştırabilir ve mesajı yalnızca Cuma gününü gösterebilirsiniz.

Aşağıdaki kod bunu yapardı:

Private Sub Workbook_Open() wkday = Weekday(Date) Eğer wkday = 6 ise MsgBox "Zaman Çizelgesini Doldurmayı Unutmayın" End Sub

Hafta içi işlevinde Pazar'a 1, Pazartesi'ye 2 vb. değer atandığını unutmayın.

Bu nedenle Cuma için 6 kullandım.

Workbook Open olayı, aşağıdakiler gibi birçok durumda faydalı olabilir:

  • Bir çalışma kitabı açıldığında kişiye bir karşılama mesajı göstermek istediğinizde.
  • Çalışma kitabı açıldığında bir hatırlatıcı görüntülemek istediğinizde.
  • Açıldığında çalışma kitabında her zaman belirli bir çalışma sayfasını etkinleştirmek istediğinizde.
  • Çalışma kitabıyla birlikte ilgili dosyaları açmak istediğinizde.
  • Çalışma kitabı her açıldığında tarih ve saat damgasını yakalamak istediğinizde.

Çalışma Kitabı Yeni Sayfa Olayı

Çalışma kitabına yeni bir sayfa eklediğinizde NewSheet olayı tetiklenir.

Yeni eklenen sayfanın A1 hücresine tarih ve saat değerini girmek istediğinizi varsayalım. Bunu yapmak için aşağıdaki kodu kullanabilirsiniz:

Private Sub Workbook_NewSheet(ByVal Sh As Object) Hatada Devam Ediyor Sonraki Sh.Range("A1") = Format(Şimdi, "dd-mmm-yyyy ss:dd:ss") End Sub

Yukarıdaki kod, birinin çalışma sayfası değil de bir grafik sayfası eklediği durumları işlemek için 'Sonraki Hatada Devam Et' özelliğini kullanır. Grafik sayfasında A1 hücresi bulunmadığından, 'Sonraki Hatada Devam Et' kullanılmazsa bir hata gösterir.

Başka bir örnek, eklenir eklenmez yeni bir sayfaya bazı temel ayarlar veya biçimlendirmeler uygulamak istediğinizde olabilir. Örneğin, yeni bir sayfa eklemek ve otomatik olarak bir seri numarası (100'e kadar) almasını istiyorsanız, aşağıdaki kodu kullanabilirsiniz.

Private Sub Workbook_NewSheet(ByVal Sh As Object) Hatasında Sh.Range("A1") İle Devam Ediyor .Value = "S. No." .Interior.Color = vbBlue .Font.Color = vbWhite End With For i = 1 ila 100 Sh.Range("A1").Offset(i, 0).Value = i Next i Sh.Range("A1", Range ("A1").End(xlDown)).Borders.LineStyle = xlSürekli Son Alt

Yukarıdaki kod ayrıca biraz biçimlendirme yapar. Başlık hücresine mavi bir renk verir ve yazı tipini beyaz yapar. Ayrıca tüm doldurulmuş hücrelere bir kenarlık uygular.

Yukarıdaki kod, kısa bir VBA kodunun her yeni çalışma sayfası eklediğinizde birkaç saniye çalmanıza nasıl yardımcı olabileceğinin bir örneğidir (bunun her seferinde yapmanız gereken bir şey olması durumunda).

Olayı Kaydetmeden Önce Çalışma Kitabı

Bir çalışma kitabını kaydettiğinizde, Kaydetmeden Önce olayı tetiklenir. Önce olayın tetiklendiğini ve ardından çalışma kitabının kaydedildiğini unutmayın.

Bir Excel çalışma kitabını kaydederken iki olası senaryo olabilir:

  1. İlk kez kaydediyorsunuz ve Farklı Kaydet iletişim kutusunu gösterecek.
  2. Zaten daha önce kaydettiniz ve önceden kaydedilmiş sürümdeki değişiklikleri kaydedip üzerine yazacaktır.

Şimdi BeforeSave olayını kullanabileceğiniz birkaç örneğe bakalım.

İlk kez kaydettiğiniz yeni bir çalışma kitabınız olduğunu ve kullanıcıya K sürücüsüne kaydetmesini hatırlatmak istediğinizi varsayalım, ardından aşağıdaki kodu kullanabilirsiniz:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Eğer SaveAsUI ise MsgBox "Bu Dosyayı K Drive'a Kaydet" End Sub

Yukarıdaki kodda, dosya hiç kaydedilmemişse SaveAsUI True'dur ve Farklı Kaydet iletişim kutusunu açar. Yukarıdaki kod, Farklı Kaydet iletişim kutusu görünmeden önce mesajı görüntüler.

Başka bir örnek, dosyanın belirli bir hücreye kaydedildiği tarih ve saati güncellemek olabilir.

Aşağıdaki kod, dosya kaydedildiğinde Sayfa1'in A1 hücresine tarih ve saat damgasını ekler.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Worksheets("Sheet1").Range("A1") = Format(Now, "dd-mmm-yyyy ss:dd:ss") End Sub

Kullanıcı çalışma kitabını kaydeder kaydetmez bu kodun yürütüleceğini unutmayın. Çalışma kitabı ilk kez kaydediliyorsa, Farklı Kaydet iletişim kutusu görüntülenecektir. Ancak, Farklı Kaydet iletişim kutusunu gördüğünüzde kod zaten yürütülür. Bu noktada, çalışma kitabını kaydetmemeye ve iptal etmeye karar verirseniz, tarih ve saat hücreye zaten girilmiş olacaktır.

Çalışma Kitabı BeforeClose Olayı

Kapatmadan Önce olayı, çalışma kitabı kapatılmadan hemen önce gerçekleşir.

Aşağıdaki kod, çalışma kitabı kapatılmadan önce tüm çalışma sayfalarını korur.

Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim sh BuWorkbook'taki Her sh için Çalışma Sayfası Olarak Dim sh.Worksheets sh.Protect Sonraki sh End Sub

Çalışma kitabını kapatır kapatmaz olay kodunun tetiklendiğini unutmayın.

Bu olay hakkında bilinmesi gereken önemli bir şey, çalışma kitabının gerçekten kapalı olup olmamasının önemli olmadığıdır.

Çalışma kitabı kaydedilmemişse ve çalışma kitabını kaydedip kaydetmeyeceğinizi soran bir komut istemiyle karşılaşırsanız ve İptal'i tıklatırsanız, çalışma kitabınız kaydedilmez.Ancak, olay kodu o zamana kadar zaten yürütülmüş olacaktı.

Çalışma Kitabı BeforePrint Olayı

Yazdır komutunu (veya Baskı Önizleme komutunu) verdiğinizde, Baskıdan Önce olayı tetiklenir.

Aşağıdaki kod, çalışma kitabınız yazdırılmadan önce tüm çalışma sayfalarını yeniden hesaplayacaktır.

Private Sub Workbook_BeforePrint(Boolean Olarak İptal Et) Çalışma Sayfalarındaki Her ws için ws.Sonraki ws End Sub Hesapla

Kullanıcı çalışma kitabını yazdırırken, çalışma kitabının tamamını mı yoksa yalnızca bir kısmını mı yazdırıyorsa olay tetiklenir.

Aşağıdaki başka bir örnek, çalışma kitabı yazdırıldığında altbilgiye tarih ve saati ekleyecek koddur.

Private Sub Workbook_BeforePrint(Boolean Olarak İptal) Dim ws Çalışma Sayfası Olarak BuWorkbook.Worksheets'teki Her ws için

Çalışma Sayfası Düzeyindeki Olaylar (Örneklerle Açıklanmış)

Çalışma sayfası olayları, çalışma sayfasındaki tetikleyicilere göre gerçekleşir.

Aşağıda, bir çalışma sayfasında en sık kullanılan olaylar verilmiştir.

Etkinlik ismi Olayı ne tetikler
etkinleştir Çalışma sayfası etkinleştirildiğinde
Silmeden Önce Çalışma sayfası silinmeden önce
ÖnceDoubleClick Çalışma sayfasına çift tıklanmadan önce
ÖnceSağTıklama Çalışma sayfasına sağ tıklanmadan önce
Hesaplamak Çalışma sayfası hesaplanmadan veya yeniden hesaplanmadan önce
Değişiklik Çalışma sayfasındaki hücreler değiştirildiğinde
Devre dışı bırakmak Çalışma sayfası devre dışı bırakıldığında
PivotTableGüncellemesi Çalışma sayfasındaki Özet Tablo güncellendiğinde
SeçimDeğiştirme Çalışma sayfasındaki seçim değiştirildiğinde

Bunun tam bir liste olmadığını unutmayın. Tam listeyi burada bulabilirsiniz.

Çalışma Sayfası olay kodunun, çalışma sayfası nesne kodu penceresinde (olayın tetiklenmesini istediğiniz pencerede) saklandığını unutmayın. Bir çalışma kitabında birden çok çalışma sayfası olabilir ve kodunuz yalnızca olay, yerleştirildiği çalışma sayfasında gerçekleştiğinde tetiklenir.

Şimdi bazı yararlı çalışma sayfası etkinliklerine bir göz atalım ve bunların günlük işlerinizde nasıl kullanılabileceğini görelim.

Çalışma Sayfası Etkinleştirme Etkinliği

Bu olay, bir çalışma sayfasını etkinleştirdiğinizde tetiklenir.

Aşağıdaki kod, etkinleştirildiği anda bir sayfanın korumasını kaldırır.

Private Sub Worksheet_Activate() ActiveSheet.Unprotect End Sub

Bu olayı, çalışma sayfasını etkinleştirir etkinleştirmez belirli bir hücrenin veya hücre aralığının (veya adlandırılmış bir aralığın) seçildiğinden emin olmak için de kullanabilirsiniz. Aşağıdaki kod, sayfayı etkinleştirir etkinleştirmez D1 hücresini seçecektir.

Private Sub Worksheet_Activate() ActiveSheet.Range("D1").Select End Sub

Çalışma Sayfası Değişiklik Etkinliği

Çalışma sayfasında her değişiklik yaptığınızda bir değişiklik olayı tetiklenir.

Her zaman değil.

Etkinliği tetikleyen bazı değişiklikler var, bazıları da tetiklemiyor. Etkinliği tetiklemeyen bazı değişikliklerin listesi:

  • Hücrenin biçimlendirmesini değiştirdiğinizde (yazı tipi boyutu, renk, kenarlık vb.).
  • Hücreleri birleştirdiğinizde. Bu şaşırtıcıdır, çünkü bazen hücreleri birleştirmek, sol üstteki hariç tüm hücrelerden içeriği kaldırır.
  • Bir hücre yorumu eklediğinizde, sildiğinizde veya düzenlediğinizde.
  • Bir hücre aralığını sıraladığınızda.
  • Hedef Arama'yı kullandığınızda.

Aşağıdaki değişiklikler olayı tetikleyecektir (olmaması gerektiğini düşünseniz bile):

  • Biçimlendirmeyi kopyalayıp yapıştırmak olayı tetikler.
  • Biçimlendirmeyi temizlemek olayı tetikler.
  • Yazım denetimi çalıştırmak olayı tetikler.

Aşağıda, değiştirilen hücrenin adresini içeren bir mesaj kutusu gösteren bir kod verilmiştir.

Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "Az önce değiştiniz" & Target.Address End Sub

Bu işe yaramaz bir makro olsa da, hangi hücrelerin değiştirildiğini bulmak için Hedef bağımsız değişkenini nasıl kullanacağınızı gösterir.

Şimdi birkaç faydalı örnek daha görelim.

Diyelim ki bir hücre aralığınız var (diyelim ki A1:D10) ve bir komut istemi göstermek ve kullanıcıya bu aralıktaki bir hücreyi gerçekten değiştirmek isteyip istemediğini sormak istediğinizi varsayalım, aşağıdaki kodu kullanabilirsiniz.

İki düğmeli bir komut istemi gösterir - Evet ve Hayır. Kullanıcı 'Evet'i seçerse değişiklik yapılır, aksi takdirde tersine çevrilir.

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row <= 10 And Target.Column <= 4 Then Ans = MsgBox("A1:D10'daki hücrelerde değişiklik yapıyorsunuz. Bunu istediğinizden emin misiniz?", vbYesNo) End If If Ans = vbNo Then Application.EnableEvents = False Application.Undo Application.EnableEvents = True End If End Sub

Yukarıdaki kodda Hedef hücrenin ilk 4 sütunda ve ilk 10 satırda olup olmadığını kontrol ediyoruz. Bu durumda, mesaj kutusu gösterilir. Ayrıca, kullanıcı mesaj kutusunda Hayır'ı seçerse, değişiklik tersine çevrilir (Application.Undo komutuyla).

Application.EnableEvents = False öğesini Application.Undo satırından önce kullandığımı unutmayın. Sonra bir sonraki satırda Application.EnableEvent = True kullanarak bunu tersine çevirdim.

Geri alma gerçekleştiğinde bu gereklidir, ayrıca change olayını da tetikler. EnableEvent öğesini False olarak ayarlamazsam, change olayını tetiklemeye devam edecek.

Ayrıca change olayını kullanarak adlandırılmış bir aralıktaki değişiklikleri de izleyebilirsiniz. Örneğin, “DataRange” adında bir adlandırılmış aralığınız varsa ve kullanıcının bu adlandırılmış aralıkta bir değişiklik yapması durumunda bir bilgi istemi göstermek istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

Private Sub Worksheet_Change(ByVal Target As Range) Dim DRange As Range Set DRange = Range("DataRange") If Not Intersect(Target, DRange) Değilse MsgBox "Veri Aralığında bir değişiklik yaptınız" End If End Sub

Yukarıdaki kod, değişiklikleri yaptığınız hücrenin/aralığın Veri Aralığı için ortak hücrelere sahip olup olmadığını kontrol eder. Varsa, mesaj kutusunu gösterir.

Çalışma Kitabı SeçimiDeğiştirme Olayı

Seçim değişikliği olayı, çalışma sayfasında bir seçim değişikliği olduğunda tetiklenir.

Aşağıdaki kod, seçimi değiştirdiğiniz anda sayfayı yeniden hesaplayacaktır.

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.Calculate End Sub

Bu olayın başka bir örneği, seçili hücrenin etkin satırını ve sütununu vurgulamak istediğiniz zamandır.

Aşağıda gösterildiği gibi bir şey:

Aşağıdaki kod bunu yapabilir:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlNone ActiveCell ile .EntireRow.Interior.Color = RGB(248, 203, 173) .EntireColumn.Interior.Color = RGB(180, 198, 231) End With Alt Bitiş

Kod önce arka plan rengini tüm hücrelerden kaldırır ve ardından kodda belirtileni aktif satır ve sütuna uygular.

Ve bu kodla ilgili sorun da bu. Tüm hücrelerden rengi kaldırdığını.

Diğer hücrelerdeki rengi korurken etkin satırı/sütununu vurgulamak istiyorsanız, bu öğreticide gösterilen tekniği kullanın.

Çalışma Kitabı DoubleClick Etkinliği

Bu benim en sevdiğim çalışma sayfası etkinliklerinden biri ve bunu kullandığım birçok öğretici göreceksiniz (bu veya bu gibi).

Bu olay, bir hücreye çift tıkladığınızda tetiklenir.

Bunun ne kadar harika olduğunu göstereyim.

Aşağıdaki kodla, bir hücreye çift tıklayabilirsiniz ve arka plan rengi uygulayacak, yazı tipi rengini değiştirecek ve hücredeki metni kalın yapacaktır;

Private Sub Worksheet_BeforeDoubleClick(Aralık Olarak ByVal Hedef, Boole Olarak İptal Et) İptal = Hedefle Doğru .Interior.Color = vbBlue .Font.Color = vbWhite .Font.Bold = End Sub ile True End

Bu, bir hücre listesinden geçerken ve seçilen birkaç hücreyi vurgulamak istediğinizde faydalı olabilir. Son adımı tekrarlamak için F4 tuşunu kullanabilirsiniz, ancak yalnızca bir tür biçimlendirme uygulayabilir. Bu çift tıklama olayı ile, sadece bir çift tıklama ile üçünü de uygulayabilirsiniz.

Yukarıdaki kodda Cancel = True değerini yaptığımı unutmayın.

Bu, varsayılan çift tıklama eyleminin devre dışı bırakılması için yapılır - bu, düzenleme moduna girmektir. İptal = Doğru ile, hücreye çift tıkladığınızda Excel sizi Düzenleme moduna almaz.

İşte başka bir örnek.

Excel'de yapılacaklar listeniz varsa, görevi tamamlandı olarak işaretlemek için üstü çizili biçimi uygulamak için çift tıklama olayını kullanabilirsiniz.

Aşağıda gösterildiği gibi bir şey:

İşte bunu yapacak kod:

Özel Alt Worksheet_BeforeDoubleClick(Aralık Olarak ByVal Hedef, Boole Olarak İptal Et) Cancel = True CurrFormat = Target.Font.Strikethrough If CurrFormat Then Target.Font.Strikethrough = False Else Target.Font.Strikethrough = End Sub ise True End

Bu kodda toggle olayı olarak çift tıklama yaptığımı unutmayın. Bir hücreye çift tıkladığınızda, üstü çizili biçimin zaten uygulanıp uygulanmadığını kontrol eder. Varsa, çift tıklama, üstü çizili biçimi kaldırır ve değilse, üstü çizili biçim uygulanır.

Excel VBA OnTime Etkinliği

Bu makalede şimdiye kadar gördüğümüz olaylar, çalışma kitabı, çalışma sayfası, grafik sayfası veya Kullanıcı Formları vb. Excel nesnelerinden biriyle ilişkilendirildi.

OnTime olayı, normal VBA modülünde saklanabileceğinden diğer olaylardan farklıdır (diğerleri ThisWorkbook veya Worksheets veya UserForms gibi nesnelerin kod penceresine yerleştirilecekti).

Normal VBA modülü içinde, uygulama nesnesinin bir yöntemi olarak kullanılır.

Bunun bir olay olarak kabul edilmesinin nedeni, belirttiğiniz zamana göre tetiklenebilmesidir. Örneğin, sayfanın her 5 dakikada bir yeniden hesaplanmasını istersem bunun için OnTime olayını kullanabilirim.

Veya günün belirli bir saatinde bir mesaj/hatırlatıcı göstermek istersem OnTime olayını kullanabilirim.

Aşağıda her gün saat 2'de bir mesaj gösterecek bir kod var.

Sub MessageTime() Application.OnTime TimeValue("14:00:00"), "ShowMessage" End Sub Sub ShowMessage() MsgBox "Öğle Yemeği Zamanı" End Sub

Bu kodu normal VBA modülüne yerleştirmeniz gerektiğini unutmayın,

Ayrıca, OnTime olayı belirtilen zamanda tetiklenecek olsa da, herhangi bir zamanda makroyu manuel olarak çalıştırmanız gerekir. Makroyu çalıştırdıktan sonra, saat 2'ye kadar bekleyecek ve ardından 'ShowMessage' makrosunu çağıracaktır.

ShowMessage makrosu daha sonra mesajı görüntüler.

OnTime olayı dört bağımsız değişken alır:

Application.OnTime(En erken zaman, prosedür, En son zaman, Takvim)

  • En erken zaman: Prosedürü çalıştırmak istediğiniz zaman.
  • Prosedür: Çalıştırılması gereken prosedürün adı.
  • En Son Zaman (Opsiyonel): Başka bir kodun çalışıyor olması ve belirttiğiniz kodun belirtilen zamanda çalıştırılamaması durumunda beklemesi gereken En SonZamanı belirtebilirsiniz. Örneğin, EarlyTime + 45 olabilir (bu, diğer prosedürün tamamlanması için 45 saniye bekleyeceği anlamına gelir). 45 saniye sonra bile işlem yapılamıyorsa terk edilir. Bunu belirtmezseniz, Excel kodun çalıştırılabilmesini bekleyecek ve ardından çalıştıracaktır.
  • Program (Opsiyonel): True olarak ayarlanırsa, yeni zaman prosedürünü planlar. False ise, önceden ayarlanmış prosedürü iptal eder. Varsayılan olarak, bu Doğru'dur.

Yukarıdaki örnekte, yalnızca ilk iki argümanı kullandık.

Başka bir örneğe bakalım.

Aşağıdaki kod, çalışma sayfasını her 5 dakikada bir yenileyecektir.

Dim NextRefresh as Date Sub RefreshSheet() ThisWorkbook.Worksheets("Sheet1").NextRefresh'i Hesapla = Now + TimeValue("00:05:00") Application.OnTime NextRefresh, "RefreshSheet" End Sub Sub StopRefresh() On Error Resume Next Application.OnTime NextRefresh, "RefreshSheet", , False End Sub

Yukarıdaki kod, çalışma sayfasını her 5 dakikada bir yenileyecektir.

Şimdiki saati belirlemek için Şimdi işlevini kullanır ve ardından geçerli saate 5 dakika ekler.

OnTime olayı, siz onu durdurana kadar çalışmaya devam eder. Çalışma kitabını kapatırsanız ve Excel uygulaması hala çalışıyorsa (diğer çalışma kitapları açıksa), içinde OnTime olayının çalıştığı çalışma kitabı kendini yeniden açar.

Bu, özellikle OnTime olayı durdurularak daha iyi halledilir.

Yukarıdaki kodda StopRefresh koduna sahibim ancak OnTime olayını durdurmak için onu çalıştırmanız gerekiyor. Bunu manuel olarak yapabilir, bir düğmeye atayabilir ve bunu düğmeye basarak veya Workbook Close olayından çağırarak yapabilirsiniz.

Private Sub Workbook_BeforeClose(Boolean Olarak İptal Et) Çağrı StopRefresh End Sub

Yukarıdaki 'BeforeClose' olay kodu ThisWorkbook kod penceresine gider.

Excel VBA OnKey Etkinliği

Excel ile çalışırken kullandığınız tuş vuruşlarını izlemeye devam eder. Bu, bir olayın tetikleyicisi olarak tuş vuruşlarını kullanmamızı sağlar.

OnKey olayı ile bir tuş vuruşunu (veya tuş vuruşlarının bir kombinasyonunu) ve bu tuş vuruşu kullanıldığında yürütülmesi gereken kodu belirtebilirsiniz. Bu tuş vuruşlarına basıldığında, bunun için kodu yürütecektir.

Tıpkı OnTime olayı gibi, OnKey olayını iptal etmenin bir yolunun olması gerekir. Ayrıca, belirli bir tuş vuruşu için OnKey olayını ayarladığınızda, bu olay tüm açık çalışma kitaplarında kullanılabilir hale gelir.

Size OnKey olayını kullanmanın bir örneğini göstermeden önce, VBA'da size sunulan anahtar kodları paylaşayım.

ANAHTAR KOD
geri al {GERİ} veya {BS}
Kırmak {KIRMAK}
Caps Lock {CAPS LOCK}
Silmek {SİL} veya {DEL}
Aşağı ok {AŞAĞI}
Son {SON}
Girmek ~
Enter (sayısal tuş takımında) {GİRMEK}
Kaçmak {ESCAPE} veya {ESC}
Ev {EV}
Ins {SOKMAK}
Sol ok {AYRILDI}
Rakam kilidi {RAKAM KİLİDİ}
PageDown {PGDN}
Sayfa yukarı {PGUP}
Sağ ok {SAĞ}
Kaydırma kilidi {SCROLLOCK}
Sekme {SEKME}
Yukarı ok {YUKARI}
F1'den F15'e {F1} - {F15}

Herhangi bir onkey olayını kullanmanız gerektiğinde, bunun için kodu kullanmanız gerekir.

Yukarıdaki tabloda tek tuş vuruşları için kodlar bulunmaktadır.

Bunları aşağıdaki kodlarla da birleştirebilirsiniz:

  • Vardiya: + (Artı işareti)
  • Kontrol: ^ (Şapka)
  • Alt: % (Yüzde)

Örneğin, Alt F4 için şu kodu kullanmanız gerekir: “%{F4}” - burada % ALT tuşu ve {F4} F4 tuşu içindir.

Şimdi bir örneğe bakalım (OnKey olaylarının kodunun normal VBA modülüne yerleştirildiğini unutmayın).

PageUp veya PageDown tuşuna bastığınızda, etkin hücrenin 29 satır yukarısına/altına atlar (en azından dizüstü bilgisayarımda böyle yapıyor).

Bir seferde sadece 5 satır atlamasını istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

Sub PageUpDownKeys() Application.OnKey "{PgUp}", "PageUpMod" Application.OnKey "{PgDn}", "PageDownMod" End Sub Sub PageUpMod() Açık Hata Devam Sonraki ActiveCell.Offset(-5, 0).Activate End Sub Sub PageDownMod() Açık Hata Devam Sonraki ActiveCell.Offset(5, 0).End Sub'ı Etkinleştir

Kodun ilk bölümünü çalıştırdığınızda OnKey olaylarını çalıştıracaktır. Bu yürütüldükten sonra, PageUp ve PageDown tuşlarının kullanılması imlecin bir seferde yalnızca 5 satır atlamasını sağlar.

Hataların yok sayıldığından emin olmak için 'Sonraki Hatada Devam Et'i kullandığımızı unutmayın. Bu hatalar, çalışma sayfasının en üstünde olsanız bile PageUp tuşuna bastığınızda ortaya çıkabilir. Atlanacak başka satır olmadığından, kod bir hata gösterecektir. Ancak 'Sonraki Hatada Devam Et'i kullandığımız için yok sayılacaktır.

Bu OnKey olaylarının kullanılabilir olduğundan emin olmak için kodun ilk bölümünü çalıştırmanız gerekir. Çalışma kitabını açar açmaz bunun kullanılabilir olmasını istiyorsanız, bunu ThisWorkbook kod penceresine yerleştirebilirsiniz.

Private Sub Workbook_Open() Application.OnKey "{PgUp}", "PageUpMod" Application.OnKey "{PgDn}", "PageDownMod" End Sub

Aşağıdaki kod, anahtarları normal işlevlerine döndürecektir.

Sub Cancel_PageUpDownKeysMod() Application.OnKey "{PgUp}" Application.OnKey "{PgDn}" End Sub

OnKey yönteminde ikinci bağımsız değişkeni belirtmediğinizde, tuş vuruşunu normal işlevine döndürür.

Bir tuş vuruşunun işlevselliğini iptal etmek ve bu tuş vuruşu kullanıldığında Excel'in hiçbir şey yapmamasını istiyorsanız, ikinci argüman olarak boş bir dize kullanmanız gerekir.

Aşağıdaki kodda, PageUp veya PageDown tuşlarını kullandığımızda Excel hiçbir şey yapmaz.

Sub Ignore_PageUpDownKeys() Application.OnKey "{PgUp}", "" Application.OnKey "{PgDn}", "" End Sub

VBA'da Olayları Devre Dışı Bırakma

Bazen kodunuzun düzgün çalışması için olayları devre dışı bırakmanız gerekebilir.

Örneğin, bir aralığım (A1:D10) olduğunu ve bu aralıkta bir hücre değiştirildiğinde bir mesaj göstermek istediğimi varsayalım. Bu yüzden bir mesaj kutusu gösteriyorum ve kullanıcıya değişikliği yapmak isteyip istemediğinden emin olup olmadığını soruyorum. Cevap Evet ise değişiklik yapılır ve cevap Hayır ise VBA bunu geri alır.

Aşağıdaki kodu kullanabilirsiniz:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row <= 10 And Target.Column <= 4 Then Ans = MsgBox("A1:D10'daki hücrelerde değişiklik yapıyorsunuz. Bunu istediğinizden emin misiniz?", vbYesNo) End If If Ans = vbNo Then Application.Undo End If End Sub

Bu kodla ilgili sorun, kullanıcı mesaj kutusunda Hayır'ı seçtiğinde, eylemin tersine çevrilmesidir (Application.Undo'yu kullandığım için).

Geri alma gerçekleştiğinde ve değer orijinal değere geri döndürüldüğünde, VBA change olayı tekrar tetiklenir ve kullanıcıya tekrar aynı mesaj kutusu gösterilir.

Bu, mesaj kutusunda HAYIR'ı tıklamaya devam edebileceğiniz ve görünmeye devam edeceği anlamına gelir. Bu, bu durumda sonsuz döngüde sıkışıp kaldığınız için olur.

Bu gibi durumlardan kaçınmak için, change olayının (veya başka bir olayın) tetiklenmemesi için olayları devre dışı bırakmanız gerekir.

Aşağıdaki kod bu durumda iyi çalışır:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row <= 10 And Target.Column <= 4 Then Ans = MsgBox("A1:D10'daki hücrelerde değişiklik yapıyorsunuz. Bunu istediğinizden emin misiniz?", vbYesNo) End If If Ans = vbNo Then Application.EnableEvents = False Application.Undo Application.EnableEvents = True End If End Sub

Yukarıdaki kodda Application.Undo satırının hemen üstünde - Application.EnableEvents = False kullandık.

EnableEvents öğesini False olarak ayarlamak, herhangi bir olayı tetiklemez (geçerli veya açık çalışma kitaplarında).

Geri alma işlemini tamamladıktan sonra EnableEvents özelliğini True olarak geri çevirebiliriz.

Olayları devre dışı bırakmanın, şu anda açık olan (veya EnableEvents False olarak ayarlandığında açılan) tüm çalışma kitaplarını etkilediğini unutmayın. Örneğin, kodun bir parçası olarak yeni bir çalışma kitabı açarsanız Çalışma Kitabı Açma olayı çalışmaz.

Olayların Etkisi Yığını Geri Al

Önce size Undo Stack'in ne olduğunu söyleyeyim.

Excel'de çalışırken, eylemlerinizi izlemeye devam eder. Bir hata yaptığınızda, önceki adıma geri dönmek için her zaman Control + Z tuşlarını kullanabilirsiniz (yani mevcut işleminizi geri alın).

Control + Z'ye iki kez basarsanız, sizi iki adım geriye götürür. Gerçekleştirdiğiniz bu adımlar, Geri Al yığınının bir parçası olarak depolanır.

Çalışma sayfasını değiştiren herhangi bir olay bu Geri Al yığınını yok eder.Bu, bir olayı tetiklemeden önce 5 şey yaptıysam, önceki adımlara geri dönmek için Control + Z'yi kullanamayacağım anlamına gelir. Olayı tetiklemek benim için o yığını yok etti.

Aşağıdaki kodda, çalışma sayfasında bir değişiklik olduğunda A1 hücresine zaman damgasını girmek için VBA kullanıyorum.

Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Range("A1").Value = Format(Şimdi, "dd-mmm-yyyy hh:mm:ss") Application.EnableEvents = True End Sub

Çalışma sayfasında bir değişiklik yaptığım için bu, geri alma yığınını yok edecek.

Ayrıca, bunun yalnızca etkinliklerle sınırlı olmadığını unutmayın.

Normal VBA modülünde saklanan bir kodunuz varsa ve çalışma sayfasında bir değişiklik yaparsanız, Excel'deki geri alma yığınını da yok eder.

Örneğin, aşağıdaki kod sadece A1 hücresine “Merhaba” metnini girin, ancak bunu çalıştırmak bile geri alma yığınını yok eder.

Sub TypeHello() Range("A1").Value = "Merhaba" End Sub

Aşağıdaki Excel VBA Eğitimlerini de Beğenebilirsiniz:

  • Excel VBA'da Hücreler ve Aralıklarla Çalışma.
  • Excel VBA'da Çalışma Sayfalarıyla Çalışma.
  • Excel VBA'da Çalışma Kitaplarıyla Çalışma.
  • Excel VBA Döngüleri - En İyi Kılavuz.
  • Excel VBA'da IF Sonra Else İfadesini Kullanma.
  • Excel'de Sonraki Döngü için.
  • Excel VBA'da Kullanıcı Tanımlı İşlevler Oluşturma.
  • Excel'de Eklentiler Nasıl Oluşturulur ve Kullanılır.
  • Kişisel Makro Çalışma Kitabına kaydederek Makrolar Oluşturun ve Yeniden Kullanın.
wave wave wave wave wave