Excel'de makro nasıl kaydedilir?
ANAHTAR NOKTALARI
- Makro kaydetmek, Excel’de gerçekleştirdiğiniz eylemleri kaydetmek anlamına gelir.
- Makro kaydetmek için makro kaydediciyi kullanmanız gerekir.
- Makro kaydedici, siz aktiviteyi gerçekleştirirken arkadaki kodu üretir.
- Excel’de makro kaydederken duraklatamazsınız.
- Makro kaydedici mükemmel kod oluşturmaz; bu nedenle kayıttan sonra kodunuzu temizlediğinizden emin olun.
Bu kılavuz, makro kaydetmenin tüm yönlerini öğrenmenize yardımcı olacaktır. Ayrıca kodu kaydettikten sonra nasıl temizleyeceğinizi de öğreneceksiniz.
Öyleyse başlayalım.
Makro kaydedici nedir?
Excel Makro Kaydedici, Excel’de gerçekleştirdiğiniz eylemleri (tümünü değil) kaydedebilen ve bunun için kod üreten bir araçtır. Belirli bir görevi bir kez yaptığınızda bunun için bir makro oluşturulur ve bir dahaki sefere o görevi manuel olarak yapmak yerine o kodu çalıştırmanız gerekir.
Bir video kamera düşünün, o da onun gibi çalışıyor ve yaptığınız aktiviteye göre kod üretiyor.
Bir makro kaydedicinin kod sağlayamadığı zamanların olabileceğini anlamalısınız. Ancak, bilmiyorsanız kodu öğrenmenin yine de harika bir yolu.
Makro kaydedici düğmesini geliştirici sekmesinde bulabilirsiniz.
Excel’de programlama için VBA’yı kullanmak , Excel’deki ileri düzey becerilerden biridir ve VBA’ya başlamak için makro kaydetme konusunda uzman olmanız gerekir.
Makro kaydetmeden önce planlama
Bir video kaydetmek istiyorsanız önceden bir senaryo oluşturmak, uygun ışıklara sahip olmak vb. gibi küçük bir planlama yapmanız gerekir.
Benzer şekilde, bir makroyu kaydetmek de biraz planlama gerektirir.
Mesele şu ki, kaydedilen makroyu tekrar kullanırken çalıştırmak istemediğiniz aktivitenin kodunu almak istemezsiniz.
Bunu yapmanın en iyi yolu, tamamlamanız gereken adımları yazmak ve kayıt sırasında bunlara bağlı kalmaktır.
Burada seçilen hücreye aşağıdaki formatı uygulayabilecek bir makro kaydedeceğiz:
- Yazı tipi rengi: kırmızı
- Yazı tipi boyutu: 12
- Yazı tipi stili: Verdena
- Yazı tipi metni: Kalın
Dediğim gibi planlama çok önemli ve bu makroyu kaydetmeden önce dikkat etmemiz gereken bir şey var, o da kayda başlamadan önce hedef hücreyi seçmek.
Dediğim gibi planlama çok önemli ve bu makroyu kaydetmeden önce dikkat etmemiz gereken bir şey var, o da kayda başlamadan önce hedef hücreyi seçmek.
Sebebi ise makroyu kaydederken bir hücreyi seçersek o seçimi de kaydedecektir.
Yani bu makroyu tekrar çalıştırdığınızda, tüm biçimlendirmeyi uygulamak için söz konusu hücreyi seçecektir. Ancak istediğimiz, aktif olan (seçili olan) hücreye format uygulamaktır.
Makro Kaydediciyi Kullanarak Makro Kaydetme Adımları
Excel’de bir MAKRO KAYDETMEK için aşağıdaki adımları takip edebilirsiniz:
- Öncelikle A4 hücresini seçin (bu hücre formatlamayı uygulayacağımız ve makromuzu kaydedeceğimiz hücredir).
- Bundan sonra, “Geliştirici sekmesine” gidin ve “KAYDET” düğmesine basmadan önce ilgili referansı etkinleştirin (bununla ilgili daha fazla bilgiyi birkaç dakika içinde öğreneceğiz).
- Kayıt düğmesine basın.
- Ve üzerine tıkladığınız anda, kaydedeceğiniz makroyla ilgili bazı ayrıntıları dolduracağınız bir iletişim kutusuyla karşılaşacaksınız (evet, onu doldurmamız gerekiyor).
- Makro adı: “HighlightCell”.
- Kısayol tuşu: Control+Shift+H klavye kısayolunu ayarlamak için Shift+H tuşlarına basın.
- Makroyu şurada saklayın: Kişisel Makro Ciltleyici’yi seçin.
- Açıklama: Bu makro kırmızı renk, yazı tipi boyutu 12, Verdana yazı tipi stili uygular ve yazı tipini kalın yapar.
- Son olarak Tamam’a tıklayın.
- Bu noktada, Excel her şeyi kaydetmek için yıldız verir (durum çubuğunda “Bir makro kaydediyor, kaydı durdurmak için tıklayın” yazan simgeyi görebilirsiniz).
- Şimdi karar verdiğimiz dört formatı uygulayın.
- Yazı tipi rengi: kırmızı
- Yazı tipi boyutu: 12
- Yazı tipi stili: Verdena
- Yazı tipi metni: Kalın
- Bunu yaptıktan sonra geliştirici sekmesine geri dönün ve “Kaydı durdur”a tıklayın veya durum çubuğunda “Kaydı durdurmak için buraya tıklayın” yazan yerden de kaydı durdurabilirsiniz. kayıt”.
Tebrikler! Bunu yaptınız ve bu noktada çalışma kitabınıza kaydedilmiş bir makronuz var, ancak şimdi bir sonraki adım onu anlamaktır.
Makro Kaydedici Kodu Nasıl Oluşturur?
Makro kaydedici, siz aktiviteleri gerçekleştirirken arka tarafta sizin için bir kod oluşturur.
Bunu anlamak için öncelikle kodu görmeniz gerekir. Bunu yapmak için Visual Basic düzenleyicisini açın, Geliştirici sekmesine ➜ Visual Basic Düzenleyici’ye gidin.
Daha sonra kodunuzun saklandığı modül1’i açın.
Kod penceresinde makro kaydedici tarafından oluşturulan kodun tamamını girdiğiniz tüm ayrıntılarla birlikte görebilirsiniz.
Gördüğünüz gibi makro adı, kısayol tuşu ve açıklaması kodun önünde yer alıyor.
Şimdi kodu anlayalım (daha önce de söylediğim gibi, makro kaydedici mükemmel kod oluşturmaz, dolayısıyla her seferinde onu temizlemeniz gerekir, bunu bir sonraki bölümde öğreneceğiz).
Dört etkinliğin tamamını tamamladınız ve makro kaydedici dört bölümlü kodu oluşturdu.
- İlk kısımda kod seçilen hücrenin yazı renginin kırmızı olması gerektiğini söylüyor ve bunun için sayısal bir değer kullanıyordu.
- Kodun ikinci kısmı seçilen hücrelerin yazı tipi boyutunun “12” olması gerektiğini belirtir.
- Üçüncü bölümde ise yazı stilinin “Verdana” olması gerektiği yazıyor.
- Son olarak dördüncü bölümde seçilen hücrenin yazı tipinin kalın olması gerektiği yazıyor.
Kaydedilen makroyu temizle
Bu noktada ilk makronuzu kaydettiniz ve bu kodun nasıl oluşturulduğunu biliyorsunuz. Ancak modüldeki kodu temizlemeniz gerekir.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .TintAndShade = 0 End With With Selection.Font .Name = "Calibri" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNo .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With With Selection.Font .Name = "Verdana" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Selection.Font.Bold = True End Sub
Yakından bakarsanız, bu onun yapabileceği aktivitelerden çok daha uzun bir süre. Bu kodda gerekli olmayan birçok özellik bulunmaktadır.
Sadece bu kodla değil, her makro kaydettiğinizde onu temizlemeniz gerekir.
Ancak bu kodu temizlemeye başlamadan önce, modülünüzde kod bulunması gereken, yaptığınız dört etkinliği hatırlamanız gerekir:
- Yazı tipi rengi: kırmızı
- Yazı tipi boyutu: 12
- Yazı tipi stili: Verdena
- Yazı tipi metni: Kalın
Bu dört aktiviteyi gerçekleştiren kod satırlarını tanımlayalım.
Artık gerçekleştirdiğiniz etkinlikleri gerçekleştiren kod satırlarını belirlediniz ve elimizde bu dört bölümlü kod da var.
Kodu temizlemenin ve istenmeyen tüm satırları kaldırmanın zamanı geldi. Aşağıdaki adımları takip et.
- İLK kısımda KIRMIZI yazı tipi rengini uygulayan satır koduna ihtiyacınız vardır, dolayısıyla “TintAndShade” özelliği buna gerek duymaz.
- Şimdi İKİNCİ bölümde diğer tüm özelliklere değil, yazı tipi boyutuna ihtiyacımız var, bu yüzden bunları kaldırın.
- Bundan sonra ÜÇÜNCÜ bölümde font name özelliğine sahip olmamız gerekiyor, bu nedenle diğer tüm özellikleri kaldırın.
- DÖRDÜNCÜ bölümde, yalnızca yazı tipini kalın yapacak tek bir kod satırınız var.
Bu noktada kod şu şekilde görünür; bu, makro kaydedici tarafından oluşturulan koddan çok daha düşüktür.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 End With With Selection.Font .Size = 12 End With With Selection.Font .Name = "Verdana" End With Selection.Font.Bold = True End Sub
Ama yine de daha fazlasını yapabilirsiniz.
Koda yakından bakarsanız, “With Selection.Font” ifadesini dört kez kullandığını görürsünüz, ancak dört özelliğin tümü için aynı nesneye atıfta bulunduğunuz için onu bir kez kullanabilirsiniz.
Yani son kod şöyle olacaktır:
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .Name = "Verdana" .Size = 12 .Bold = True End With End Sub
Bu kodu çalıştırdığınızda kaydettiğiniz etkinliklerin aynısını gerçekleştirecektir.
Sen ne yaptın?
Yeni kodda yalnızca ihtiyacınız olan etkinlikleri gerçekleştiren kod satırlarınız var.
Burada anlaşılması gereken nokta, her nesnenin her zaman özellikleri olduğu ve makro kaydedici kayıt yaptığında, siz bunları kullanmasanız bile tüm bu özellikleri o nesneyle birlikte eklediğidir.
Bu yüzden tüm bu özellikleri koddan kaldırmanız gerekiyor.
Diğeri ise kodunuzda tek bir nesne kullansanız bile, farklı aktiviteler yaptığınızda makro kaydedici tekrar tekrar ona başvuruyor ve bu yüzden “Seçimli. Yazı Tipi”ni bir kez kullanıp tüm özellikleri onun altına eklediniz. .
Her durumda, makro kaydedici tarafından oluşturulan herhangi bir kodu temizlemek için, ihtiyacınız olan etkinlikleri gerçekleştiren gerçek kod satırlarını tanımlamanız ve geri kalanını kaldırmanız gerekir.
Kaydedilen makro kodunu temizlerken en iyi yol, koddaki hataları adım adım ayıklamaktır.
Oku onu
- VBA editörünü ve Excel penceresini yan yana açın, ardından F8 tuşuna basarak kodu adım adım çalıştırın.
- Yan tarafta Excel penceresi açık olduğundan, etkinliğin hangi kod satırında yürütüldüğünü görebilirsiniz.
- İhtiyacınız olan kodu belirledikten sonra kodu silebilirsiniz ki bu gerekli değildir.
Bir makroyu adlandırın
Her makro kaydettiğinizde, o makroya bir ad vermeniz gerekir, ancak bir adın uyması gereken birkaç kural vardır:
- Bir makronun adı en fazla 80 karakter uzunluğunda olabilir.
- Boşluk, noktalama işareti veya özel karakter kullanamazsınız.
- Bir harfle başlamalıdır.
Bu kuralların dışında VBA tarafından isim olarak kullanılması yasak olan birkaç kelime daha bulunmaktadır.
Öte yandan Macro1 veya Test1 gibi varsayılan adlar yerine anlamlı bir ad kullanılması önemlidir.
Makro adında boşluk kullanamayacağınız için okunabilirliği artırmak için alt çizgi kullanabilir veya her kelimenin ilk harfini büyük yazabilirsiniz.
Kaydedilen makronun saklanması
Bir makroyu kaydetmeden önce, onu nereye kaydetmek istediğinizi belirtmeniz gerekir ve bunun için üç seçeneğiniz vardır:
- Yeni Çalışma Kitabı : Makronuzu yeni bir çalışma kitabına kaydetmek istiyorsanız bu seçeneği belirleyebilirsiniz.
- Bu çalışma kitabı : Bu seçeneği seçerek makroyu geçerli çalışma kitabına kaydedebilirsiniz.
- Kişisel Makro Çalışma Kitabı : Bu seçenek ile tüm çalışma kitaplarındaki makrolara ulaşabilirsiniz.
Göreli referans
Yukarıdaki makroyu kaydederken “Kaydı Başlat” butonuna basmadan önce “Göreli Referansları Kullan” seçeneğini seçmenizi söylemiştim.
Excel’de bir makro kaydettiğinizde Excel varsayılan olarak “Mutlak Referans”ı kullanır. Ancak makroyu kaydetmeden önce bunu değiştirebilirsiniz.
Önemli olan nokta, bir makronun kaydedilen etkinliği çalışma sayfasının herhangi bir yerinde yürütmesini istiyorsanız göreceli referansları kullanmanın çok önemli olmasıdır.
İki referans modu arasındaki farkı anlamanızı sağlamak için etkinliği iki farklı şekilde kaydetmenizi istiyorum.
- Öncelikle A1 hücresini seçin ve bir makro kaydetmeye başlayın (“Göreceli referans kullan” seçeneğini etkinleştirmeden), ardından E5 hücresini seçin .
- Makro kaydedici ile aşağıdaki kodu alacaksınız:
Sub AbsoluteReferenceMacro() Range("E5").Select End Sub
- Tekrar A1 hücresini seçin, “Göreceli referansı kullan” seçeneğini etkinleştirin ve aynı etkinliği kaydedin (E5 hücresini seçin).
- Ancak şu anda sahip olduğunuz kod farklıdır:
Sub RelativeReferenceMacro() ActiveCell.Offset(4, 4).Range(“A1”).Select End Sub
Bu iki kodu aynı etkinliği gerçekleştirerek ancak farklı referans modlarını kullanarak kaydettiniz. SAĞ?
İlk makro kodun anlaşılması oldukça basittir; E5 hücresini seçin diyor.
Ve bu makroyu çalıştırdığınızda, aynı şeyi yapar; bu noktada hangi hücreyi seçmiş olursanız olun, E5 hücresini seçersiniz.
Öte yandan ikinci makro kodu başka bir şey söylüyor ve bu kodu çalıştırmadan önce başka bir hücreyi seçerseniz farklı bir hücreyi seçecektir.
Ne için?
Bu makroyu kaydettiğinizde aktif hücre A1’di, ardından A1 hücresinin dört hücre aşağısında ve dört hücre sağında olan E5’i seçtiniz.
Artık, bu makroyu göreceli bir referansla kaydettiğiniz için, bu her zaman etkin hücrenin dört hücre aşağısında ve dört hücre sağındaki hücreyi seçecektir.
Diyelim ki aktif hücre D4 ise dört hücre aşağıda ve dört hücre sağda olan H8 hücresini seçecektir.
Referansı istediğiniz zaman, hatta kaydın ortasında bile değiştirebilirsiniz.
Makro sonu
Maalesef Excel, bir makroyu kaydederken duraklatmanıza izin vermez. Bu Microsoft Word’de mümkündür, ancak Excel’de mümkün değildir.
Birçok etkinliği gerçekleştirmeniz gereken bir makroyu kaydediyorsanız, hata olasılığını azaltmak için bunu parçalar halinde kaydetmek en iyisidir.
Makro Kaydedici Sınırlamaları
Evet, makro kaydediciyle birlikte bazı sınırlamalar gelir. VBA koduyla yapabileceğiniz pek çok şey var ancak makro kaydedici tüm etkinlikleri kaydedemez.
- Özel işlev oluşturulamıyor : VBA, çalışma sayfasında kullanabileceğiniz özel bir işlev oluşturmanıza olanak tanır, ancak makro kaydederken bu mümkün değildir.
- Yerleşik işlevler kullanılamıyor : VBA’nın kendi işlevleri vardır ( VBA İşlevleri ), ancak bunları makro kaydediciyle kullanamazsınız.
- Koşullar test edilemiyor : Bir makro kaydederken koşulları kontrol etmek için VBA IF Then Else deyimini kullanamazsınız.
- Döngü yapılamıyor : VBA’da kod yazarken döngü ifadelerini kullanabilirsiniz ancak makro kaydedicide bu mümkün değildir.
- Nesneyle etkinlik gerçekleştirilemiyor : Bir makro kaydederken, bir nesneyi gerçekten seçmeden bir eylem gerçekleştiremezsiniz. Örneğin, belirli bir hücredeki metni kalınlaştırmak istiyorsanız önce o hücreyi seçmelisiniz.
Makro kaydedici kullanmaya değer mi?
Eminim aklınızda bu soru vardır ve bu doğrudur. Bu soruyu cevaplamak için sizinle kişisel bir hikayeyi paylaşayım.
Birkaç yıl önce pivot tablo eklemek için bazı VBA kodları üzerinde çalışıyordum ve o zamanlar bu kodu yazmak için kullanmam gereken tüm nesnelerin farkında değildim. Ben de manuel olarak pivot tablo oluştururken bir makro kaydettim.
Daha sonra pivot tablo ekleme sürecini anlamak için bu koda baktım. Evet, bu kod mükemmel değildi ama bana yazma fikri verdi.
Demek istediğim, kod yazmanız gereken durumlar olabilir ve o zaman makro kaydedici size yardımcı olabilir. Makro kaydedici ayrıca bu envanter şablonunun kodlarını yazmama da yardımcı oldu.
Dürüm
Başarılı bir makro kaydetmek için aşağıdaki noktalara odaklanmalısınız:
- Makroyu kaydedeceğiniz ve diğer tüm çalışma kitaplarını kapatacağınız çalışma kitabını tanımlayın.
- Makroyu kaydetmek için doğru nesneyi seçtiğinizden emin olun.
- Makroyu kaydetmeden önce mutlak mı yoksa göreli referanslar mı kullanacağınıza karar verdiğinizden emin olun.
- Gerçekleştirmek istediğiniz eylemleri planlayın.
İlgili eğitimler
Sıkça Sorulan Sorular
Geliştirici sekmesindeki kod grubundadır.
Bunu Visual Basic düzenleyicisinden görebilirsiniz.
Pek değil, kaydettikten sonra bu kodu temizlemeniz gerekiyor.