Bu siteye giriş yaparak Çerez kullanımını kabul etmiş oluyorsunuz. İşbu sitede; çerez olarak, sadece son giriş tarihiniz ve eğer üye olursanız oturum statünüz tutulacaktır. Bunlar dışında başka hiçbir bilgi tutulmamaktadır. Çerezler için detaylı bilgi için buraya tıklayınız.
ANLADIM

DUYURULAR

Yeni eklenen ve/veya güncellenen sayfaları görmek için buraya tıklayınız.

Güncel ödev ve test listesini görmek için buraya tıklayınız.

Sitede yapılan iyileştirmeAer ve hata düzeltmelerine ait tüm bilgilendirmeleri görmek içinburaya tıklayınız.

Baş
Udemy
Konular
Son
Konular
MakroKaydetmeveVBE
Giris
VBAMakro
VBAMakro Giriş2

Makro Kaydetme ve VB Editörü

Makro Kaydetme

İlk sayfada, bir makro yazmaya başlamadan önce bir makro kaydedip oluşan kodu inceleyerek de makro öğrenmeye başlayabileceğinizden bahsetmiştim. Şimdi gelin birlikte, bir makro nasıl kaydedilir ve yazılan kod üzerinden nasıl oynama yapılır ona bakalım.

İlk olarak Developer menüsünde Record Macro diyoruz.

Makrolarımızı genelde Personal.xlsb dosyasına kaydedececeğimiz için depolama yeri olarak burayı seçiyoruz.

Şimdi basit bir dizi işlem yapalım.

  • A sütununu seçelim
  • Tüm sütunu bold ve rengini de kırmızı yapalım
  • A1'e "Merhaba" yazalım
  • Son olarak, Excelin versiyonuna göre pencerenin çeşitli yerlerinde bulunabilecek olan Stop tuşuna basalım.( Benimki pencerenin sol alt köşesinde)

Şimdi Alt+F11 tuşlarına basarak veya Develpoer menüsünden(veya QuickAccessToolbardan) VB editörünü açalım.

Burda son yazdığımız makro hep en büyük numaralı ModuleX içine gider. Ör:Module1, Module2,,,,Module5 varsa biz Module 5 içine gidip bakalım ve kodumuzu görelim.

Sub Macro2()
'
' Macro2 Macro
'

'
    Columns("A:A").Select
    Selection.Font.Bold = True
    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    Range("A1").Select
    Selection.FormulaR1C1 = "Merhaba"
End Sub
	

Gördüğünüz gibi makromuz 'Sub' ifadesi ile başladı, sonra makromuzun adı, sonra da () işaretleri geliyor. Arada kod parçaları var, en son da 'End Sub' ifadesi gelir.

' işareti açıklama cümleleri içindir, kendinize makronun o bölgesiyle ilgili hatırlatmalarda bulunmak isteyebilirsiniz. Bu açıklamalar oldukça faydalı olabilmektedir, özellikle bir makroyu seyrek kullanıyorsanız, neyi niçin yaptığınızı hatırlamak adına faydalı olmaktadır. Burada da, Excel'in kendisi otomatik bir açıklama eklemiş olduğunu görüyorsunuz. Yorumlar yeşil renkli görünürler. Kaydedilen makrolardaki bu açıklamaları silebilirsiniz.

İsterseniz bundan sonra kendiniz çeşitli satırlara müdahale edebilir, bazılarını çıkarabilir, yeni satırlar ekleyebilirsiniz. Mesela bu makro her çalıştığında A sütununu seçecektir, bunun yerine hep o anda seçili olan sütunla ilgili işlem yapan bir makro yazmak isteyebilirsiniz, ki bu daha işlevseldir. Bunun için, yukardaki gibi herhangi bir sütunu seçen bir makro kaydedin, sonra kod kısmına giderek, Columns("A:A") yazan satırı çıkarın, böylece direkt seçili olan şeyle (burada sütun seçilidir) işlem yapılır. Sütun seçili değilse, ama bulunduğunuz hücrenin bağlı olduğu sütunun seçilmesini isterseniz sütunlu ifadeyi şu şekilde değiştirmeniz yeterli olacaktır.

Columns("A:A").Select=>ActiveCell.EntireColumn.Select

Bu konularda detaylı bilgi ilerleyen sayfalarda verileceği için şuanda daha fazla ayrıntıya girilmeyecektir.

Oluşturduğunuz makrolara kısayol tuşu da atayabilir, bunları sonradan amacınıza uygun olarak değiştirebilir veya iptal edebilirsiniz. Şimdi bi de hızlıca kısayol işlemleri nasıl yapılır ona bakalım.

Kısayol işlemleri

Bir makroya kısayol tuşunu makro kaydederken atamak oldukça kolaydır: Aşağıdaki kutuya istediğiniz harfi koyabilirsiniz.(Harf dışında bir karakteri kabul etmez.)

Peki makro kaydediciyle oluşturmadığımız bir koda nasıl kısayol tuşu atarız. Basit:Developer menüsünden Macros butonuna basalım, istediğimiz makroyu seçelim ve Edit diyelim. Eğer Personal.xlsb gibi gizli bir dosyadaki makroyu editleyeceksek Excel buna izin vermez. Dosyayı önce Unhide etmeli, arkasından makro ayarını yapmalıyız, o da bittikten sonra tekrar gizlemeliyiz.

Aşağıda çıkan kutuda aynı yere istediğimiz harfi yazalım. Bu arada farkettiyseniz bu ekranda sadece Ctrl tuşuyla çalıştırılan kısayollar oluşturabiliyoruz. Farklı tuş kombinasyonlarına kısayol tuşu atamayı öğrenmek için biraz daha(nesnelerin efendisi olan Application nesnesini tanıttığımız sayfaya gelmeyi) beklemelesiniz.

Son olarak, kısayol atadığımız bir makrodan bu kısayol tuşunu nasıl kadırırız? Basit:Yine Macros düğmesine basarız, yukardaki çıkan diyalog kutusunda çıkan harfi sileriz.

VBE(Visual Basic Editörü)

Üç pencere

Henüz başlangıç aşamasındayken bir VB penceresi genel olarak aşağıdaki gibi görünür. 1 numaralı bölmede makrolara ismen ulaşacağınız project penceresi bulunur, onun altında 2 numaralı bölmede Workbook/Worksheet veya modüllerin özelliklerini gösteren properties penceresi bulunur, burayı genel olarak modüllerin adını değiştirmek için kullanacağız, onun dışında kapalı tutabilirsiniz. Bizi ilgilendirecek kısım daha çok 3 nolu geniş alan olacaktır. Kodlarımızı burada yazacağız, bütün düzeltme ve çalıştırma işlemlerini de bu alan üzerinden yapacağız.

Projects penceresiyle ilgili olarak söyleyebileceklerim şimdilik şu kadar olacaktır. 'Bir makro nereye yazılır?'ın ilk cevabını burada belirledikten sonra 3 nolu panele geçip yazmaya başlıyoruz. O yüzden kodumuzun ilk etapta neyin içine yazılacak sorusunun cevabıdır. Seçenekler şöyle:

  • Excel Objects içinde bir sayfa
  • Excel Objects içinde ThisWorkbook
  • (Genel) Modül
  • Class Modül
  • UserForm

Microsoft Excel Objects altında Sheets ve ThisWorkbook nesneleri bulunur. Sheets'lerden birinde yazılan makrolar genellikle Worksheet_SelectionChange and Worksheet_Calculate gibi sayfa olaylarını yönetmek için kullanılırken, ThisWorkbook içine yazılan makrolar dosya seviyesindeki olayları ele almak için kullanılır, Open/Close gibi. Bu nesneler hakkında daha detaylı bilgi ilerleyen bölümlerde verilecektir.

(Genel) Modüller, herhangi bir sayfa üzerinde çalışabilecek genel prosedürleri depolamak için kullanılır. Vereceğimiz örneklerin çoğu bu Modüller içine yazılacak makrolar şeklinde olacaktır.

UserForm ve Class modüllere de ilerleyen bölümlerde değinilecektir.

Önemli Not:İzleme Pencreleri bölümünde detaylı göreceğiz ancak, başlangıçta öğrenmeniz gereken bir pencere daha var. Ctrl+G tuşlarına basarsanız en aşağıda Immediate Window çıkacaktır. Kodlarımız içinde sık sık Debug.Print ifadesini kullanacağız. Bu, kendisinden sonra gelen ifadenin değerini Immediate Window'a yazan bir metoddur. O yüzden bu penecereniz de sürekli açık kalsın derim.

Menüler

Excel'in kendi içindeyken Ribbondaki menülere sık sık başvururuz ancak açık söylemek gerekirse VBE penceresindeki menülerle çok fazla işiniz olmayacak. Digital İmza ayarlamasını yapmak ve projemize referans(dll) eklemek için Tools menüsünü arada bir kullanacağız.

Bir diğer kullanacağımız menü de View menüsü olacak. Burada Immediate, Local gibi yardımcı pencereleri açacağız. Bunlara da sonrada değinilecektir.

Bir de, özel Add-inler vardır ki, eğer bunlardan birini satın aldıysanız veya ileri seviyelere geldiğinizde kendiniz yaptıysanız(bunun için VBA'in dışında şeyler bilmek gerekir) buna ait menüleri de kullanabilirsiniz. Eğer maddi durumunuz uygunsa, şu sayfadaki gibi bir Add-in kurmanızı tavsiye ederim. Mesela bu linkteki Add-in hem muhteşem bir pratiklik sağlıyor hem de hatasız kod yazılmasını sağlıyor. Bence bu linki bir yere not edin ve kendinizi biraz geliştirdikten sonra ilk etapta deneme sürümünü bi indirin, kendiniz görün neler yapılabildiğini.

TEST SORULARI

Son Sorumuz şuymuş:Bir metindeki tüm noktaları yoketmek istiyorsunuz. Hangi fonksiyonu kullanırdınız?
Soru:

A şıkkı:

B şıkkı:

C şıkkı:

D şıkkı:

Doğru Cevap Etiketler

İlişkili konuyu seç

143426

Label
* Sorulara verilen yanlış cevaplardaki esprili yorumlarım için hoşgörünüze sığınıyorum.
* Test ve Ödevlerdeki bazı detaylar burada anlatılmamış olabilir. Bunları kendiniz araştırıp bulmalısınız.
* Birden çok konuya ait içeriği olan ödevler var. Algoritmik açıdan bakıldığında o an en uygun konuya adreslenmiştir.
Dikkat! Bir soruya cevap verdikten sonra geri dönemezsiniz.
0
0
0
0

SoruID:... Şu an için bu konu için soru bulunmamaktadır. İletişim menüsünden örnek sorularınızı bana iletebilirsiniz.




ÖDEVLER

0
0
ÖdevNo:... Şu an için bu konu için ödev bulunmamaktadır. İletişim menüsünden örnek ödev sorularını bana iletebilirsin.
Çözüme bakın(Başka türlü de çözülebilir tabi, bu benim çözümüm.)




=YORUMLAR ve SORULAR=


DEVİR UYARISI

Herkese merhaba. Hosting maliyetlerinin aşırı artması yüzünden sitemi yakın zamanda(en geç Mayıs 2023) kapatmaya karar vermiştim. Ancak, siteyi yakından takip eden bir arkadaş siteyi devralmak istemiştir. Siteyi, Mayıs ayında kendisine devir etmeye karar verdim. Üyelik bilgilerini bana güvenerek girdiğiniz için, hepsini silmiş bulunuyorum, yani mail adreslerinizi kimseyle paylaşmamış olacağım. Bilginizi rica ederim.