Excel'de Makro Nasıl Kaydedilir - Adım Adım Kılavuz

Excel VBA dünyasında tamamen acemi olsanız bile, kolayca bir makro kaydedebilir ve çalışmalarınızın bir kısmını otomatikleştirebilirsiniz.

Bu ayrıntılı kılavuzda, Excel'de makroları kaydetmeye ve kullanmaya başlamak için bilmeniz gereken her şeyi ele alacağım.

VBA'yı kolay yoldan öğrenmekle ilgileniyorsanız, Çevrimiçi Excel VBA Eğitimi.

Makro nedir?

VBA'da yeniyseniz, önce size bir makronun ne olduğunu söyleyeyim - sonuçta, bu terimi tüm eğitimde kullanmaya devam edeceğim.

Makro, VBA'da (Visual Basic for Applications) yazılmış ve yürütüldüğünde bir kod yığını çalıştırmanıza izin veren bir koddur.

Çoğu zaman, insanların (kendim dahil) bir VBA koduna makro olarak başvurduğunu göreceksiniz - ister bir makro kaydedici kullanılarak oluşturulmuş olsun, ister manuel olarak yazılmış olsun.

Bir makro kaydettiğinizde, Excel, attığınız adımları yakından izler ve anladığı bir dilde, yani VBA'da not alır.

Ve Excel gerçekten iyi bir not alıcı olduğundan, çok ayrıntılı bir kod oluşturur (bu eğitimde daha sonra göreceğimiz gibi).

Şimdi, kaydı durdurduğunuzda, makroyu kaydedin ve çalıştırın, Excel, oluşturduğu VBA koduna geri döner ve aynı adımları izler.

Bu, VBA hakkında hiçbir şey bilmeseniz bile, Excel'in adımlarınızı bir kez kaydetmesine izin vererek ve daha sonra bunları yeniden kullanarak bazı görevleri otomatikleştirebileceğiniz anlamına gelir.

Şimdi, Excel'de bir makronun nasıl kaydedileceğini görelim.

Şeritte Geliştirici Sekmesini Alma

Makro kaydetmenin ilk adımı, şeritteki Geliştirici sekmesini almaktır.

Şeritte zaten geliştirici sekmesini görebiliyorsanız, sonraki bölüme gidin, aksi takdirde aşağıdaki adımları izleyin:

  • Şeritteki mevcut sekmelerden herhangi birine sağ tıklayın ve 'Şeridi Özelleştir' seçeneğine tıklayın. Excel Seçenekleri iletişim kutusunu açacaktır.
  • Excel Seçenekleri iletişim kutusunda, Şeridi Özelleştir seçeneklerine sahip olacaksınız. Sağ tarafta, Ana Sekmeler bölmesinde Geliştirici seçeneğini işaretleyin.
  • Tamam'ı tıklayın.

Yukarıdaki adımlar, Geliştirici sekmesini şerit alanında kullanılabilir hale getirir.

Excel'de Makro Kaydetme

Artık her şey elimizde olduğuna göre, Excel'de bir makronun nasıl kaydedileceğini öğrenelim.

Çok basit bir makro kaydedelim - bir hücre seçen ve içine 'Excel' metnini giren makro. Bu makroyu kaydederken 'Excel' metnini kullanıyorum, ancak adınızı veya istediğiniz herhangi bir metni girmekten çekinmeyin.

Bu makroyu kaydetme adımları şunlardır:

  1. Geliştirici sekmesine tıklayın.
  2. Kod grubunda Makro düğmesine tıklayın. Bu, 'Makro Kaydet' iletişim kutusunu açacaktır.
  3. Makro Kaydet iletişim kutusunda, makronuz için bir ad girin. adını kullanıyorum Metin Girin. Bir makroyu adlandırırken uymanız gereken bazı adlandırma koşulları vardır. Örneğin, arada boşluk kullanamazsınız. Genelde makro isimlerimi farklı kısımlarda büyük harfle başlayan tek bir kelime olarak tutmayı tercih ederim. Enter_Text gibi iki kelimeyi ayırmak için alt çizgi de kullanabilirsiniz.
  4. (İsteğe Bağlı Adım) İsterseniz bir klavye kısayolu atayabilirsiniz. Bu durumda, Control + Shift + N kısayolunu kullanacağız. Burada atadığınız kısayolun, çalışma kitabınızdaki mevcut kısayolları geçersiz kılacağını unutmayın. Örneğin, Control + S kısayolunu atarsanız, bunu çalışma kitabını kaydetmek için kullanamazsınız (bunun yerine, onu her kullandığınızda makroyu yürütür).
  5. "Makroyu şurada depola" seçeneğinde, "Bu Çalışma Kitabı"nın seçili olduğundan emin olun. Bu adım, makronun çalışma kitabının bir parçası olmasını sağlar. Kaydettiğinizde ve yeniden açtığınızda veya birisiyle paylaşsanız bile orada olacaktır.
  6. (İsteğe Bağlı Adım) Bir açıklama girin. Genelde bunu yapmam ama aşırı düzenliyseniz makronun ne hakkında olduğunu eklemek isteyebilirsiniz.
  7. Tamam'ı tıklayın. Tamam'a tıkladığınız anda, eylemlerinizi Excel'e kaydetmeye başlar. Geliştirici sekmesinde makro kaydının devam ettiğini gösteren ‘Kaydı durdur’ düğmesini görebilirsiniz.
  8. A2 hücresini seçin.
  9. Metni girin Excel (veya adınızı kullanabilirsiniz).
  10. Enter tuşuna basın. Bu, A3 hücresini seçecektir.
  11. Geliştirici sekmesinde Kaydı Durdur düğmesine tıklayın.

Tebrikler!

Excel'de ilk makronuzu kaydettiniz. Artık makro bakire değilsin.

Makro yararlı bir şey yapmasa da, bir makro kaydedicinin Excel'de nasıl çalıştığını açıklama amacına hizmet edecektir.

Şimdi devam edelim ve bu makroyu test edelim.

Makroyu test etmek için aşağıdaki adımları izleyin:

  1. A2 hücresindeki metni silin. Bu, makronun metni A2 hücresine ekleyip eklemediğini test etmek içindir.
  2. A2 dışında herhangi bir hücre seçin. Bu, makronun A2 hücresini seçip seçmediğini test etmek içindir.
  3. Geliştirici sekmesine tıklayın.
  4. Kod grubunda Makrolar düğmesini tıklayın.
  5. Makro iletişim kutusunda, Ad - EnterText makrosuna tıklayın.
  6. Çalıştır düğmesini tıklayın.

Çalıştır düğmesini tıkladığınızda, 'Excel' metninin A2 hücresine eklendiğini ve A3 hücresinin seçildiğini fark edeceksiniz.

Şimdi, bunların hepsi bir saniyede olabilir, ancak gerçekte, makro - tıpkı itaatkar bir elf gibi - makroyu kaydederken gösterdiğiniz adımların aynısını izledi.

Böylece makro önce A2 hücresini seçer, ardından metni girer. Excel içinde ve ardından A3 hücresini seçer.

Not: Makroyu klavye kısayolunu kullanarak da çalıştırabilirsiniz. Kontrol + Üst Karakter + N (Kontrol ve Shift tuşlarını basılı tutun ve ardından N tuşuna basın). Bu, makroyu kaydederken atadığımız klavye kısayolunun aynısıdır.

Arka Uçta Makro Kaydetmek Ne Yapar?

Şimdi Excel arka ucuna - VB Düzenleyicisine - gidelim ve bir makro kaydetmenin gerçekte ne yaptığını görelim.

VB Düzenleyicisini Excel'de açma adımları şunlardır:

  1. Geliştirici sekmesine tıklayın.
  2. Kod grubunda Visual Basic düğmesine tıklayın.

Veya klavye kısayolunu kullanabilirsiniz - ALT + F11 (ALT tuşunu basılı tutun ve F11'e basın), yukarıdaki iki adım yerine. Bu kısayol aynı zamanda aynı VB Düzenleyiciyi de açar.

Şimdi, VB Editörünü ilk kez görüyorsanız, bunalmayın.

Sizi VB Editor anatomisine çabucak alıştırmama izin verin.

  • Menü çubuğu: VB Editor'ün tüm seçeneklerine sahip olduğunuz yer burasıdır. Bunu VBA'nın şeridi olarak düşünün. VB Editörü ile çalışırken kullanabileceğiniz komutları içerir.
  • araç çubuğu - Bu, VB editörünün Hızlı Erişim Araç Çubuğu gibidir. Bazı kullanışlı seçeneklerle birlikte gelir ve buna daha fazla seçenek ekleyebilirsiniz. Avantajı, araç çubuğundaki bir seçeneğin sadece bir tık uzakta olmasıdır.
  • Proje Gezgini Penceresi - Burası, Excel'in tüm çalışma kitaplarını ve her çalışma kitabındaki tüm nesneleri listelediği yerdir. Örneğin, 3 çalışma sayfalı bir çalışma kitabımız varsa, Proje Gezgini'nde görünecektir. Burada modüller, kullanıcı formları ve sınıf modülleri gibi bazı ek nesneler vardır.
  • Kod Penceresi - VBA kodunun kaydedildiği veya yazıldığı yer burasıdır. Proje gezgininde listelenen her nesne için bir kod penceresi vardır - çalışma sayfaları, çalışma kitapları, modüller vb. gibi. Bu öğreticide daha sonra kaydedilen makronun bir modülün kod penceresine gittiğini göreceğiz.
  • Özellikler Penceresi - Bu pencerede her nesnenin özelliklerini görebilirsiniz. Bu pencereyi genellikle nesneleri adlandırmak veya gizli özellikleri değiştirmek için kullanırım. VB düzenleyicisini açtığınızda bu pencereyi göremeyebilirsiniz. Bunu göstermek için görünüm sekmesine tıklayın ve Özellikler Penceresi'ni seçin.
  • Hemen Pencere - Kod yazarken genellikle hemen pencereyi kullanırım. Bazı ifadeleri test etmek istediğinizde veya hata ayıklarken kullanışlıdır. Varsayılan olarak görünmeyebilir ve Görünüm sekmesine tıklayıp Anında Pencere seçeneğini seçerek görünmesini sağlayabilirsiniz.

Makroyu kaydettiğimizde - Metin Girin, VB Editöründe aşağıdakiler oldu:

  • Yeni bir modül eklendi.
  • Belirttiğimiz adla bir makro kaydedildi - Metin Girin
  • Kod, modülün kod penceresinde yazılmıştır.

Yani modüle çift tıklarsanız (bu durumda Modül 1) aşağıda gösterildiği gibi bir kod penceresi görünecektir.

İşte makro kaydedicinin bize verdiği kod:

Sub EnterText() ' ' EnterText Macro ' ' Klavye Kısayolu: Ctrl+Shift+N ' Range("A2").ActiveCell'i seçin.FormulaR1C1 = "Excel" Range("A3"). End Sub'ı seçin

VBA'da, aşağıdaki satırı izleyen herhangi bir satır (kesme işareti) yürütülmez. Sadece bilgi amaçlı yapılmış bir yorumdur. Bu kodun ilk beş satırını kaldırırsanız, makro beklendiği gibi çalışmaya devam eder.

Şimdi her bir kod satırının ne yaptığını hızlıca anlatayım:

Kod Sub ile başlar, ardından makronun adı ve boş parantez gelir. Sub, Subroutine'in kısaltmasıdır. VBA'daki her alt program (Prosedür olarak da adlandırılır) Sub ile başlar ve End Sub ile biter.

  • Aralık(“A2”).Seçin - Bu satır A2 hücresini seçer.
  • ActiveCell.FormulaR1C1 = "Excel" - bu satır, etkin hücreye Excel metnini girer. İlk adım olarak A2'yi seçtiğimiz için aktif hücremiz oluyor.
  • Aralık(“A3”).Seçin - Bu, A3 hücresini seçer. Bu, metni girdikten sonra Enter tuşuna bastığımızda olur, bunun sonucu A3 hücresini seçmekti.

Umarım şimdiye kadar Excel'de bir makronun nasıl kaydedileceği konusunda temel bir anlayışa sahip olmuşsunuzdur.

Bir makro kaydedici tarafından yazılan kodun hiçbir şekilde verimli bir kod olmadığını unutmayın.

Makro kaydedici bazen koda bazen gerekli olmayan çok fazla tüy ekler. Ama bu kullanışlı olmadığı anlamına gelmez. VBA öğrenen biri için, bir makro kaydedici, VBA'da işlerin nasıl yürüdüğünü analiz etmenin harika bir yolu olabilir.

Mutlak ve Göreli Makro Kayıt

Excel'deki mutlak ve göreli referansları zaten biliyorsunuz… değil mi?

Bunu yapmazsanız - önce referanslarla ilgili bu öğreticiyi okuyun.

Oku onu? Hadi devam edelim.

Bu bölümün ilerleyen bölümlerinde makroların mutlak ve göreli referanslarda nasıl kaydedileceğini göreceğiz. Ancak ondan önce, VBA'da mutlak ve göreceli referans arasındaki farkı hızlıca özetlememe izin verin (tembel olmanız ve birkaç satır önce verdiğim bağlantıyı okumadıysanız):

Bir makroyu kaydetmek için mutlak bir başvuru seçeneği kullanırsanız, VBA kodu her zaman kullandığınız hücrelere başvurur. Örneğin, A2 hücresini seçerseniz, Excel metnini girin ve Enter tuşuna basın, her seferinde - çalışma sayfasında nerede olursanız olun ve hangi hücre seçilirse seçilsin, kodunuz önce A2 hücresini seçer, Excel metnini girer ve sonra A3 hücresine gidin.

Bir makroyu kaydetmek için göreli bir başvuru seçeneği kullanırsanız, VBA hücre başvurularını sabit kodlamaz. Aksine, aktif hücre ile karşılaştırıldığında harekete odaklanacaktır. Örneğin, A1 hücresini zaten seçtiğinizi ve makroyu göreli referans modunda kaydetmeye başladığınızı varsayalım.

Şimdi A2 hücresini seçin, Excel metnini girin ve enter tuşuna basın. Şimdi, bu makroyu çalıştırdığınızda, A2 hücresine geri dönmeyecek, bunun yerine aktif hücreye göre hareket edecektir. Örneğin, K3 hücresi seçilirse, K4'e taşınır, Excel metnini girin ve son olarak K5 hücresini seçin.

Şimdi size göreli referanslar modunda bir makroyu nasıl kaydedeceğinizi anlatayım:

  1. A1 hücresini seçin.
  2. Geliştirici sekmesine tıklayın.
  3. Kod grubunda, 'Göreceli Referansları Kullan' düğmesine tıklayın. Açık olduğunu belirtmek için yeşile dönecektir.
  4. Makro Kaydet düğmesini tıklayın.
  5. Makro Kaydet iletişim kutusunda, makronuz için bir ad girin. adını kullanıyorum EnterTextRelRef.
  6. Makroyu şurada depola seçeneğinde, 'Bu Çalışma Kitabı'nın seçili olduğundan emin olun.
  7. Tamam'ı tıklayın.
  8. A2 hücresini seçin.
  9. Metni girin Excel (veya adınızı girebilirsiniz).
  10. Enter tuşuna basın. Bu, imleci A3 hücresine götürecektir.
  11. Geliştirici sekmesinde Kaydı Durdur düğmesine tıklayın.

Bu, makroyu göreli referans modunda kaydeder.

Şimdi yap bunu.

  1. Herhangi bir hücreyi seçin (A1 dışında).
  2. Geliştirici sekmesine tıklayın.
  3. Kod grubunda Makrolar düğmesini tıklayın.
  4. Makro iletişim kutusunda, makro Adı - EnterTextRelRef.
  5. Çalıştır düğmesini tıklayın.

Ne oluyor? İmleç A3 hücresine geri döndü mü?

olmaz - çünkü makroyu göreceli referans modunda kaydetmişsinizdir. Böylece imleç aktif hücreye göre hareket eder. Örneğin, bunu K3 hücresi seçildiğinde yaparsanız, Excel K4 hücresidir metnini girer ve sonunda K5 hücresini seçer.

Arka uçta kaydedilen kod (VB Editör modülü kod penceresi):

Sub EnterTextRelRef() ' ' EnterTextRelRef Makrosu ' ' ActiveCell.Offset(1, 0).Range("A1").ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1") öğesini seçin. End Sub'ı seçin

Bu kodun tamamının hiçbir yerde K3 veya K4 hücrelerine atıfta bulunmadığını unutmayın. Bunun yerine, seçili hücreye başvurmak için Activecell'i ve etkin hücreye göre hareket etmek için Offset'i kullanır.

Kodun sahip olduğu Range(“A1”) kısmı için endişelenmeyin. Makro kaydedicinin eklediği, hiçbir amaca hizmet etmeyen ve kaldırılabilen gereksiz kodlardan biridir. Kod onsuz gayet iyi çalışırdı.

Geliştirici sekmesindeki 'Göreceli Referans Kullan' düğmesi bir geçiş düğmesidir. Tıklayarak kapatabilir (ve mutlak referansa geri dönebilirsiniz).

Bir Makro Kaydedici Ne Yapamaz?

Makro kaydedici, Excel'de sizi takip etme ve adımlarınızı tam olarak kaydetme konusunda harikadır, ancak daha fazlasını yapmanız gerektiğinde başarısız olabilir.

  • Nesneyi seçmeden bir kod çalıştıramazsınız. Makro kaydedicinin bir sonraki çalışma sayfasına gitmesini ve mevcut çalışma sayfasından ayrılmadan A sütunundaki tüm doldurulmuş hücreleri vurgulamasını istiyorsanız, bunu yapamaz. Çünkü sizden bunu yapmanızı istesem, siz bile (mevcut sayfadan ayrılmadan) bunu yapamayacaksınız. Ve bunu kendiniz yapamıyorsanız, makro kaydedici eylemlerinizi nasıl yakalayacak. Bu gibi durumlarda, manuel olarak gidip kodu oluşturmanız/düzenlemeniz gerekir.
  • Makro kaydediciyle özel bir işlev oluşturamazsınız. VBA ile çalışma sayfasında normal işlevler olarak kullanabileceğiniz özel işlevler oluşturabilirsiniz. Kodu manuel olarak yazarak bunu oluşturabilirsiniz.
  • Etkinliklere dayalı kod çalıştıramazsınız: VBA'da, o olayla ilişkili bir kodu çalıştırmak için bir çalışma kitabını açmak, bir çalışma sayfası eklemek, bir hücreye çift tıklamak vb. Gibi birçok olayı kullanabilirsiniz. Bunu yapmak için bir makro kaydedici kullanabilirsiniz.
  • Makro kaydedici ile döngü oluşturamazsınız. Kodu manuel olarak girdiğinizde, VBA'daki döngülerin gücünden yararlanabilirsiniz (Sonraki İçin, Her Sonraki İçin, Do while, Do kadar gibi). Ancak bir makro kaydederken bunu yapamazsınız.
  • Koşulları analiz edemezsiniz: Makro kaydediciyi kullanarak kod içindeki koşulları kontrol edebilirsiniz. Bir VBA kodunu manuel olarak yazarsanız, bir koşulu analiz etmek ve doğruysa bir kod (veya yanlışsa başka bir kod) çalıştırmak için IF Then Else deyimlerini kullanabilirsiniz.
  • Bir makro prosedüründe bağımsız değişkenleri iletemezsiniz: Bir makro kaydettiğinizde, hiçbir zaman argümanı olmaz. Bir altyordam, bir görevi gerçekleştirmek için makro içinde kullanılabilecek girdi bağımsız değişkenlerini alabilir. Bir makro kaydedilirken, kaydedilen makrolar bağımsız olduğundan ve mevcut başka herhangi bir makroya bağlı olmadığından bu yapılamaz.

Makro Etkin Dosya Uzantıları

Bir makro kaydettiğinizde veya Excel'de manuel olarak VBA kodu yazdığınızda, dosyayı makro etkin bir dosya uzantısıyla (.xlsm) kaydetmeniz gerekir.

Excel 2007'den önce, tek bir dosya biçimi yeterliydi - .xls.

Ancak 2007'den itibaren .xlsx standart dosya uzantısı olarak tanıtıldı. .xlsx olarak kaydedilen dosyalar içinde makro tutamaz. Yani .xlsx uzantılı bir dosyanız varsa ve bir makro kaydeder/yazar ve kaydederseniz, makro etkin biçimde kaydetmeniz için sizi uyaracak ve size bir iletişim kutusu gösterecektir (aşağıda gösterildiği gibi):

Hayır'ı seçerseniz, Excel bunu makro etkin bir biçimde kaydetmenize olanak tanır. Ancak Evet'i tıklatırsanız, Excel tüm kodu çalışma kitabınızdan otomatik olarak kaldırır ve .xlsx çalışma kitabı olarak kaydeder.

Bu nedenle, çalışma kitabınızda bir makro varsa, o makroyu tutmak için onu .xlsm biçiminde kaydetmeniz gerekir.

Excel'de Makro Çalıştırmanın Farklı Yolları

Şimdiye kadar, Excel'de makro çalıştırmanın yalnızca bir yolunu gördük - bu, Makro iletişim kutusunu kullanmaktır.

Ancak makroları çalıştırmanın birkaç yolu vardır.

  1. Şeritten Makro Çalıştırın (Geliştirici Sekmesi)
  2. Bir klavye kısayolu kullanma (atamanız gereken)
  3. Bir Şekle Makro Atamak
  4. Makroyu Düğmeye Atama
  5. VB Düzenleyiciden bir Makro Çalıştırın

Sonuç - Sıkıştığında Makro Kaydet

Bir makro kaydedicinin Excel'de VBA ile çalışan herkes için yararlı bir araç olduğundan daha önce bahsetmiştim.

Makro kaydediciyi birkaç kez kullandığınızda, çok fazla gereksiz kod yaydığını fark edeceksiniz. Ancak yine de faydalıdır ve nereden başlayacağınız konusunda size bazı fikirler verir. Örneğin, VBA kullanarak bir hücre sütununu filtrelemenizi istersem ve sözdiziminin ne olduğu hakkında hiçbir fikriniz yoksa, hızlıca bir makro kaydedebilir ve kodu kontrol edebilirsiniz.

Bir makro kaydedici vazgeçilmez bir araçtır ve yıllar süren VBA kodlama deneyimimden sonra bile, yardım için sık sık makro kaydediciye başvuruyorum.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave