Resimli Anlatım İçin Tıklayın
Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
İlk Olarak Excell Programını Açıyoruz , Sayfa 1 yada hangi sayfaya kod yazmak istiyorsanız oraya sağ tıklayın ve Kod Görüntüle ye Tıklayın ;
Resmi büyük boyutta görmek için tıklayınız.
excell 2013 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-1
Gelelim Makro yazmaya
Unutmayın!
Makrolar genel olarak VBA penceresindeki modül nesnesinin sayfasına yazılır.
Örnek 1: Makro ile yeni bir Çalışma Sayfası oluşturmak ya da Çalışma Kitabına yeni bir sayfa eklemek.
Yeni bir Excel çalışma sayfası açtığınızda ve eğer Excel 2013 kullanıyorsanız ve de varsayılan değerlerde herhangi bir değişiklik yapmadıysanız ekrana Şekil-1 deki gibi 3 adet sayfa gelecektir.
Aşağıdaki kodu VBAda açtığınız bir modül sayfasına yazın ve çalıştırın.
Sub SayfaEklemek()
Worksheets.Add
End Sub
Kodu çalıştırdığınızda, Şekil-2 deki gibi Sayfa4 adlı yeni bir Çalışma Sayfasının Çalışma Kitabınıza eklendiğini göreceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
sayfa2 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-2
kodu yazarken eğer dikkat ettiyseniz, Worksheets ifadesinden sonra . karakterini koyduğunuzda Şekil-3 deki gibi bir görüntü ile karşılaştınız.
Resmi büyük boyutta görmek için tıklayınız.
add Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-3
Visual Programlama dillerini bilenler, bir anda ekrana gelen bu liste kutusunun ne olduğunu bilirler. Bilmeyenler için kısa bir açıklama yapmak zorundayız.
Siz VBA sayfasında bir kod yazarken, bazen nesnelerin özelliklerini hatırlamayabilirsiniz. Acaba, Worksheets nesnesinin ne gibi özellikleri ya da metotları vardı? sorusunun cevabını Visual Basic size bir liste halinde sunuyor. Siz, nesneyi yazdıktan sonra, o nesnenin özelliğini yada metodunu belirlemek için . karakterini koyduğunuzda ekrana Şekil-3′teki gibi özellik/metot hatırlatma listesi gelecektir.
Bütün özellik/metotları görmek isterseniz, kod sayfasında herhangi bir yerde iken CTRL + SPACE tuşlarına birlikte basarsanız aynı liste kutusuna benzer bir listeyi ekranda göreceksiniz.
Şimdi örneğimize tekrar dönelim.
Worksheet: Çalışma Sayfası
Worksheets: Çalışma Sayfaları
Add: Ekle
Kodu kısaca açıklayalım.
Worksheets.Add yani ÇalışmaSayfası.Ekle manasına gelir.
Eğer dikkat ettiyseniz, yeni eklenen Sayfa4 adlı Çalışma Sayfasının en sola yani Sayfa1inde soluna eklenmiş olduğunu görürsünüz. Amacımız ise her yeni eklenen Çalışma Sayfasının, en sağ taraftaki sayfanın sağına eklenmesi olsun. Sayfalarınıza göz atın, en sağda olan sayfanın Sayfa3 olduğunu göreceksiniz. O halde aşağıdaki kodu yazın.
Sub SayfaEklemek()
Worksheets.Add.Move After:=Worksheets(Sayfa3″)
End Sub
Kodu çalıştırdığınızda Şekil-4ü elde edeceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
2014 09 02 23 21 18 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-4
Hemen, aklınıza şu soru takıldı. Kodu tekrar çalıştırdığımızda bu defa yine Sayfa3ün sağ tarafına ve Sayfa5in sol tarafına ekleniyor. Ama bizim istediğimiz ise her defasında yeni eklenen sayfa en sağ tarafa eklensin.
Haklısınız. Biz burada adım adım ilerleyerek, önümüze çıkacak bir çok soruyu da cevaplamaya çalışıyoruz. Yukarıdaki kodu açıkladıktan sonra, sorunumuzu çözeceğiz. Önce yeni kelimelere göz atalım.
Move: Taşı
After: -den sonra
Kodu kısaca okuyalım.
Worksheets.Add.Move After:=Worksheets(Sayfa3″)
yani, Yeni Eklenen Çalışma sayfasını Sayfa3den sonraya taşı.
Bu defa soruna köklü bir çözüm getirelim. Aşağıdaki kodu yazın.
Sub SayfaEklemek()
Worksheets.Add.Move After:=Worksheets(Worksheets.Count)
End Sub
Kodu çalıştırdığınızda Şekil-5deki görüntüyü elde edeceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
2014 09 02 23 22 56 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-5
Count: Saymak
Yukarıdaki kodun aynısı olmakla birlikte, burada Sayfa3 yerine Worksheets.Count ifadesi geldi.
Worksheets.Count ifadesi bize bir rakam döndürecektir. Çünkü bu ifade ile aktif Çalışma Kitabındaki sayfalar sayılıyor. Bizim kodu çalıştırmadan evvelki Çalışma Sayfası sayımız, 5 di. (Sayfa4, Sayfa1, Sayfa2, Sayfa3 ve Sayfa5) O halde yukarıdaki kodda Worksheets.Count yerine 5 rakamı gelecektir. Siz kodu çalıştırdığınızda, bilgisayar, önce o an aktif olan sayfaları sayacak ve daha sonra da yeni eklenecek sayfayı, bu sayı kadar sağa taşıyacaktır.
Bizim Çalışma Kitabımızda 5 sayfa olduğuna göre, yeni eklenecek olan sayfa, soldan sağa 6. sıraya yani en sağa yerleştirilecektir.
Örnek 2: Çalışma Sayfasının adını değiştirmek.
Excel, sizin eklediğiniz her sayfayı, yeni bir isim vermediğiniz sürece sıra numarasına göre isimlendirir. Sayfa4, Sayfa5, Sayfa6 gibi. Ama bu isimler kullanıcı için genellikle uygun değildir. Kullanıcı aradığını daha rahat bulabilmek için sayfa isimlerini kendine göre değiştirir. Madem artık makro öğreniyoruz, o halde bu isimleri Çalışma Sayfası daha eklenir eklenmez değiştirelim. Bunun için önce basit bir kod yazalım.
Sub SayfaAdi()
Worksheets.Add
ActiveSheet.Name = Yeni
End Sub
Kodu çalıştırdığınızda Şekil-6daki gibi bir görüntü elde edeceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
2014 09 02 23 24 52 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-6
ActiveSheet : Aktif sayfa
Name : İsim, Ad
İlk olarak Çalışma Kitabımıza yeni bir Çalışma Sayfası ekledik. Doğal olarak Excelde buna yeni bir isim atadı. (Eğer yeni bir Çalışma Kitabı açmışsanız, muhtemelen Sayfa4 olarak atandı). Daha sonra makronun ikinci satırına geçildi. Bu satırda da Aktif olan Çalışma Sayfasına yeni bir isim verildi.
Unutmayın!
Eğer Excelde makro yazmak istiyorsanız ve bu olayları hatasız başarmak istiyorsanız yaptıklarımızı tek tek uygulayın ve görün. Çünkü programcılık sadece bilgi yüklenmekle gerçekleşmez. Eğer çok pratik yapmıyorsanız ve bu pratikler içerisinde bir çok hatalarla karşılaşmıyorsanız ve de bu hataları çözmek için saatlerinizi harcamıyorsanız asla iyi bir programcı olamazsınız. Şunu söylememiz yerinde olacaktır. Eğer Excel makroları ile program yazmaya başlayabilirseniz, diğer programlama dilleri size çok kolay gelecektir. Çünkü şu anda okuduğunuz satırlar Visual Basic dilinin Excele uyarlanmış şeklidir. Sanırım ne demek istediğimi anladınız.
Bundan sonra uygulayacağımız adımlar, tamamen sizin Excelde programcılık mantığınızı geliştirmek üzere yazılmıştır. Şekil-7deki hata mesajı ile karşılaşmamak için kendimiz bir denetim yapacağız. Aşağıdaki kodu yazın.
Sub SayfaAdi()
For i = 1 To Worksheets.Count
If Worksheets(i).Name = Yeni Then
MsgBox Bu isimde bir sayfa bulundu
Exit Sub
End If
Next i
Worksheets.Add
ActiveSheet.Name = Yeni
End Sub
Yeni bir Çalışma Kitabında kodu çalıştırdığınızda, Çalışma Kitabına Yeni adında bir sayfa eklenecektir. Kodu ikinci defa çalıştırdığınızda ise ekrana Şekil 9 daki gibi bir mesaj penceresi çıkacaktır.
Neler oldu?
For i = 1 To Worksheets.Count
Makro kodunu çalıştırdığınızda ilk olarak O anda çalışmakta olduğunuz, katapta bulunan bütün sayfaları tek tek denetlemek üzere bir For Next döngüsü açtık.
If Worksheets(i).Name = Yeni Then
İkinci satırda ise bir şart ileri sürdük. Şartımız şu: Eğer i numaralı sayfanın adı Yeni ise.
İşte şartımız bu. Yani bilgisayar, bu iki satırda, Çalışma Kitabındaki bütün sayfaları kontrol etmeye başlayacak. Eğer, sayfalardan herhangi bir tanesinin adı, Yeni ise bir sonraki satırdaki kodu çalıştıracak.
MsgBox Bu isimde bir sayfa bulundu
Bu satıra gelindiğinde, Siz Tamam düğmesine tıklayana kadar bu şekil ekranda durur ve Excel sayfaları üzerinde herhangi bir işlem yapamazsınız. Tamam düğmesine tıkladığınızda, Mesaj penceresi kapanır ve bir sonraki satır çalışır.
Exit Sub
Bu kod çalıştığında, SayfaAdi makro kodu sonlanır. Kendinden sonraki hiçbir kod okunmaz ve makro durdurulur. Bunun nedenini anladınız sanırım. Ama ben yine de açıklayayım. Eğer bu satırı yazmasaydık. Kitapta Yeni adlı bir sayfa bulunduğu halde, tekrar aşağıdaki iki satır çalışacak ve hata penceresi ile karşılaşılacaktı.
Worksheets.Add
ActiveSheet.Name = Yeni
Eğer, kitabımızda Yeni adlı bir sayfa yoksa For ile başlayan ve Next ile biten satırlar arasında herhangi bir işlem yapılmayacak ve sadece yukarıdaki iki satır dikkate alınarak Yeni adında bir sayfa açılacaktır.
Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
İlk Olarak Excell Programını Açıyoruz , Sayfa 1 yada hangi sayfaya kod yazmak istiyorsanız oraya sağ tıklayın ve Kod Görüntüle ye Tıklayın ;
Resmi büyük boyutta görmek için tıklayınız.
excell 2013 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-1
Gelelim Makro yazmaya
Unutmayın!
Makrolar genel olarak VBA penceresindeki modül nesnesinin sayfasına yazılır.
Örnek 1: Makro ile yeni bir Çalışma Sayfası oluşturmak ya da Çalışma Kitabına yeni bir sayfa eklemek.
Yeni bir Excel çalışma sayfası açtığınızda ve eğer Excel 2013 kullanıyorsanız ve de varsayılan değerlerde herhangi bir değişiklik yapmadıysanız ekrana Şekil-1 deki gibi 3 adet sayfa gelecektir.
Aşağıdaki kodu VBAda açtığınız bir modül sayfasına yazın ve çalıştırın.
Sub SayfaEklemek()
Worksheets.Add
End Sub
Kodu çalıştırdığınızda, Şekil-2 deki gibi Sayfa4 adlı yeni bir Çalışma Sayfasının Çalışma Kitabınıza eklendiğini göreceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
sayfa2 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-2
kodu yazarken eğer dikkat ettiyseniz, Worksheets ifadesinden sonra . karakterini koyduğunuzda Şekil-3 deki gibi bir görüntü ile karşılaştınız.
Resmi büyük boyutta görmek için tıklayınız.
add Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-3
Visual Programlama dillerini bilenler, bir anda ekrana gelen bu liste kutusunun ne olduğunu bilirler. Bilmeyenler için kısa bir açıklama yapmak zorundayız.
Siz VBA sayfasında bir kod yazarken, bazen nesnelerin özelliklerini hatırlamayabilirsiniz. Acaba, Worksheets nesnesinin ne gibi özellikleri ya da metotları vardı? sorusunun cevabını Visual Basic size bir liste halinde sunuyor. Siz, nesneyi yazdıktan sonra, o nesnenin özelliğini yada metodunu belirlemek için . karakterini koyduğunuzda ekrana Şekil-3′teki gibi özellik/metot hatırlatma listesi gelecektir.
Bütün özellik/metotları görmek isterseniz, kod sayfasında herhangi bir yerde iken CTRL + SPACE tuşlarına birlikte basarsanız aynı liste kutusuna benzer bir listeyi ekranda göreceksiniz.
Şimdi örneğimize tekrar dönelim.
Worksheet: Çalışma Sayfası
Worksheets: Çalışma Sayfaları
Add: Ekle
Kodu kısaca açıklayalım.
Worksheets.Add yani ÇalışmaSayfası.Ekle manasına gelir.
Eğer dikkat ettiyseniz, yeni eklenen Sayfa4 adlı Çalışma Sayfasının en sola yani Sayfa1inde soluna eklenmiş olduğunu görürsünüz. Amacımız ise her yeni eklenen Çalışma Sayfasının, en sağ taraftaki sayfanın sağına eklenmesi olsun. Sayfalarınıza göz atın, en sağda olan sayfanın Sayfa3 olduğunu göreceksiniz. O halde aşağıdaki kodu yazın.
Sub SayfaEklemek()
Worksheets.Add.Move After:=Worksheets(Sayfa3″)
End Sub
Kodu çalıştırdığınızda Şekil-4ü elde edeceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
2014 09 02 23 21 18 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-4
Hemen, aklınıza şu soru takıldı. Kodu tekrar çalıştırdığımızda bu defa yine Sayfa3ün sağ tarafına ve Sayfa5in sol tarafına ekleniyor. Ama bizim istediğimiz ise her defasında yeni eklenen sayfa en sağ tarafa eklensin.
Haklısınız. Biz burada adım adım ilerleyerek, önümüze çıkacak bir çok soruyu da cevaplamaya çalışıyoruz. Yukarıdaki kodu açıkladıktan sonra, sorunumuzu çözeceğiz. Önce yeni kelimelere göz atalım.
Move: Taşı
After: -den sonra
Kodu kısaca okuyalım.
Worksheets.Add.Move After:=Worksheets(Sayfa3″)
yani, Yeni Eklenen Çalışma sayfasını Sayfa3den sonraya taşı.
Bu defa soruna köklü bir çözüm getirelim. Aşağıdaki kodu yazın.
Sub SayfaEklemek()
Worksheets.Add.Move After:=Worksheets(Worksheets.Count)
End Sub
Kodu çalıştırdığınızda Şekil-5deki görüntüyü elde edeceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
2014 09 02 23 22 56 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-5
Count: Saymak
Yukarıdaki kodun aynısı olmakla birlikte, burada Sayfa3 yerine Worksheets.Count ifadesi geldi.
Worksheets.Count ifadesi bize bir rakam döndürecektir. Çünkü bu ifade ile aktif Çalışma Kitabındaki sayfalar sayılıyor. Bizim kodu çalıştırmadan evvelki Çalışma Sayfası sayımız, 5 di. (Sayfa4, Sayfa1, Sayfa2, Sayfa3 ve Sayfa5) O halde yukarıdaki kodda Worksheets.Count yerine 5 rakamı gelecektir. Siz kodu çalıştırdığınızda, bilgisayar, önce o an aktif olan sayfaları sayacak ve daha sonra da yeni eklenecek sayfayı, bu sayı kadar sağa taşıyacaktır.
Bizim Çalışma Kitabımızda 5 sayfa olduğuna göre, yeni eklenecek olan sayfa, soldan sağa 6. sıraya yani en sağa yerleştirilecektir.
Örnek 2: Çalışma Sayfasının adını değiştirmek.
Excel, sizin eklediğiniz her sayfayı, yeni bir isim vermediğiniz sürece sıra numarasına göre isimlendirir. Sayfa4, Sayfa5, Sayfa6 gibi. Ama bu isimler kullanıcı için genellikle uygun değildir. Kullanıcı aradığını daha rahat bulabilmek için sayfa isimlerini kendine göre değiştirir. Madem artık makro öğreniyoruz, o halde bu isimleri Çalışma Sayfası daha eklenir eklenmez değiştirelim. Bunun için önce basit bir kod yazalım.
Sub SayfaAdi()
Worksheets.Add
ActiveSheet.Name = Yeni
End Sub
Kodu çalıştırdığınızda Şekil-6daki gibi bir görüntü elde edeceksiniz.
Resmi büyük boyutta görmek için tıklayınız.
2014 09 02 23 24 52 Excel 2013 de Kod Kısmına Nasıl Geçilir ve makro yazma
Şekil-6
ActiveSheet : Aktif sayfa
Name : İsim, Ad
İlk olarak Çalışma Kitabımıza yeni bir Çalışma Sayfası ekledik. Doğal olarak Excelde buna yeni bir isim atadı. (Eğer yeni bir Çalışma Kitabı açmışsanız, muhtemelen Sayfa4 olarak atandı). Daha sonra makronun ikinci satırına geçildi. Bu satırda da Aktif olan Çalışma Sayfasına yeni bir isim verildi.
Unutmayın!
Eğer Excelde makro yazmak istiyorsanız ve bu olayları hatasız başarmak istiyorsanız yaptıklarımızı tek tek uygulayın ve görün. Çünkü programcılık sadece bilgi yüklenmekle gerçekleşmez. Eğer çok pratik yapmıyorsanız ve bu pratikler içerisinde bir çok hatalarla karşılaşmıyorsanız ve de bu hataları çözmek için saatlerinizi harcamıyorsanız asla iyi bir programcı olamazsınız. Şunu söylememiz yerinde olacaktır. Eğer Excel makroları ile program yazmaya başlayabilirseniz, diğer programlama dilleri size çok kolay gelecektir. Çünkü şu anda okuduğunuz satırlar Visual Basic dilinin Excele uyarlanmış şeklidir. Sanırım ne demek istediğimi anladınız.
Bundan sonra uygulayacağımız adımlar, tamamen sizin Excelde programcılık mantığınızı geliştirmek üzere yazılmıştır. Şekil-7deki hata mesajı ile karşılaşmamak için kendimiz bir denetim yapacağız. Aşağıdaki kodu yazın.
Sub SayfaAdi()
For i = 1 To Worksheets.Count
If Worksheets(i).Name = Yeni Then
MsgBox Bu isimde bir sayfa bulundu
Exit Sub
End If
Next i
Worksheets.Add
ActiveSheet.Name = Yeni
End Sub
Yeni bir Çalışma Kitabında kodu çalıştırdığınızda, Çalışma Kitabına Yeni adında bir sayfa eklenecektir. Kodu ikinci defa çalıştırdığınızda ise ekrana Şekil 9 daki gibi bir mesaj penceresi çıkacaktır.
Neler oldu?
For i = 1 To Worksheets.Count
Makro kodunu çalıştırdığınızda ilk olarak O anda çalışmakta olduğunuz, katapta bulunan bütün sayfaları tek tek denetlemek üzere bir For Next döngüsü açtık.
If Worksheets(i).Name = Yeni Then
İkinci satırda ise bir şart ileri sürdük. Şartımız şu: Eğer i numaralı sayfanın adı Yeni ise.
İşte şartımız bu. Yani bilgisayar, bu iki satırda, Çalışma Kitabındaki bütün sayfaları kontrol etmeye başlayacak. Eğer, sayfalardan herhangi bir tanesinin adı, Yeni ise bir sonraki satırdaki kodu çalıştıracak.
MsgBox Bu isimde bir sayfa bulundu
Bu satıra gelindiğinde, Siz Tamam düğmesine tıklayana kadar bu şekil ekranda durur ve Excel sayfaları üzerinde herhangi bir işlem yapamazsınız. Tamam düğmesine tıkladığınızda, Mesaj penceresi kapanır ve bir sonraki satır çalışır.
Exit Sub
Bu kod çalıştığında, SayfaAdi makro kodu sonlanır. Kendinden sonraki hiçbir kod okunmaz ve makro durdurulur. Bunun nedenini anladınız sanırım. Ama ben yine de açıklayayım. Eğer bu satırı yazmasaydık. Kitapta Yeni adlı bir sayfa bulunduğu halde, tekrar aşağıdaki iki satır çalışacak ve hata penceresi ile karşılaşılacaktı.
Worksheets.Add
ActiveSheet.Name = Yeni
Eğer, kitabımızda Yeni adlı bir sayfa yoksa For ile başlayan ve Next ile biten satırlar arasında herhangi bir işlem yapılmayacak ve sadece yukarıdaki iki satır dikkate alınarak Yeni adında bir sayfa açılacaktır.
