• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excel 2013 ‘ de Kod Kısmına Nasıl Geçilir ve makro yazma

Katılım
2 Eylül 2014
Mesajlar
2
Excel Vers. ve Dili
2013
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 VBA’da 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 Sayfa’sının en sola yani Sayfa1’inde 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 Sayfa5’in 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ı Sayfa3’den 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-5’deki 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 Sayfa’sı sayımız, 5 di. (Sayfa4, Sayfa1, Sayfa2, Sayfa3 ve Sayfa5) O halde yukarıdaki kod’da 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 Sayfa’sı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-6’daki 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 Excel’de 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 Excel’de 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 Excel’e uyarlanmış şeklidir. Sanırım ne demek istediğimi anladınız.

Bundan sonra uygulayacağımız adımlar, tamamen sizin Excel’de programcılık mantığınızı geliştirmek üzere yazılmıştır. Şekil-7’deki 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.
 
Geri
Üst