Konu: Excel'de Makrolarla Çalışma  (Okunma sayısı 12877 defa)

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 25 Oca 2019 23:20:30
Ek Bilgi 10 (İç İçe Döngüler)

Bazen döngü içinde döngü kullanmak durumunda kalabiliriz. Buna bir örnek program yapalım.

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
   cells(a,b)=sayiuret(99,1)
   next b
next a



Daha önce hazırladığımız excel dosyasında "Toplama Alıştırmaları" sayfasını açalım ve daha sonra geliştirici sekmesinden "Ekle" bölümünü tıklayalım ve "Düğme" görselini seçelim. Düğmeyi (Buton), Excel sayfasında istediğimiz bir yere bırakalım. Bıraktığımız anda bir sayfa açılacak buraya makro adını girelim. Dilerseniz "ToplamaAlistirmalari" adını girebilirsiniz. Sonra da "Yeni" düğmesine tıklayın. Makromuz açılacak. Makroya yukarıdaki kodu ekleyin daha sonra makroyu kapatın. Düğmeye tıklayın. "S1" yazan yerlere sayılar gelimiş olması gerekiyor.


Düşünme zamanı
Yukarıdaki kodun herhangi bir yerine sadece bir satır daha ekleyerek "S2" alanlarına da yeni sayılar yazdırabilir misiniz? Bu soruya daha önceden kodlama bilgisi olmayan ve konuyu takip eden arkadaşlardan cevap bekliyorum

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 26 Oca 2019 23:11:33
Sorunun Cevabı
Sanırım konu henüz yeterli takibe ulaşmadı. Cevabı yazıyorum.


Çalışma sayfasında ikinci sayıları birinci sayıların hemen altına yazdıracağımız için satır numarası birincilerin satır numaralarından bir fazla olmalı. O nedenle aşağıya satır numarası bir fazla olan bir satır daha ekliyoruz.

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1) ' bu satır yeni eklendi.
   next b
next a

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 11:00:36
Yeni Bir Soru
Çalışma sayfamızda her bir işleme toplama işareti eklemek için hangi satırı eklemeliyiz? Son eklenen Excel dosyamızı indirerek inceleyebilirsiniz. Cevap gün içinde eklenecektir.

Not: Konuyu, takip edenlerin ve daha sonra takip edeceklerin daha iyi şekilde faydalanabilmesi için parçalara ayırıyorum, zaman zaman sorular sorup kendim cevaplayacağım. Sorulara dileyen öğretmen arkadaşlar da cevap verebilirler.

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 13:47:01
Sorunun Cevabı

Kodlarımıza son eklenen satırla artık birinci toplanan ve ikinci toplananı ekleyebiliyoruz. Şimdi ise toplama işareti ekleyeceğiz. Bunun için ikinci toplananın eklendiği satırın altına aşağıdaki kodu ekleyeceğiz
 
   cells(a+1,b-1)="+" 

Son durumda kodlarımız aşağıdaki gibi olacak:

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)
   cells(a+1,b-1)="+"    ' bu satır yeni eklendi.
   next b
next a
 

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 13:59:37
İlk Programımız Tamamlandı

Artık 7 satırlık kod ile (aşağıdaki kodlar) 30 adet toplama alıştırması üretebiliyoruz.  Her tıklamanızda yeni bir çalışma sayfası hazırlanacak. Sonraki derslerde cevapların eşsiz olmasını sağlayacak etkinlikler de yapabiliriz.

 
Toplama Programımız
[linkler sadece üyelerimize görünmektedir.]

 
for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)
   cells(a+1,b-1)="+"    ' bu satır yeni eklendi.
   next b
next a
 

Genel bir şablon oluştuğu için bundan sonraki aşamalar daha hızlı ilerleyecek. Sıradaki hedefimiz çıkarma alıştırmaları üreten program hazırlamak.

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 14:45:55
Çıkarma Programımız

Önceki kodlar üzerindeki ilk değişikliğimiz:
"+" işaretini "-" ile değiştiriyoruz.

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)
   cells(a+1,b-1)="-"   ' işareti değiştirdik.
   next b
next a



Birinci Sayı İkinci Sayıdan Her Zaman  Büyük Olsun
Eğer birinci sayı ikinci sayıdan küçük veya eşit ise yeniden sayı üreteceğiz.

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
YenidenSayiUret:
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)

   If cells(a,b)<=cells(a+1,b) then
   GoTo YenidenSayiUret  'sonuç negatif çıkmasın
   End If

   cells(a+1,b-1)="-"   ' işareti değiştirdik.
   next b
next a



Programımız Tamam
Aşağıdaki 11 satır kod ile çıkarma programımız da tamamlandı.

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
YenidenSayiUret:
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)

   If cells(a,b)<=cells(a+1,b) then
   GoTo YenidenSayiUret 
   End If

   cells(a+1,b-1)="-"   
   next b
next a

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 14:52:13
Toplama Alıştırma Sayfası
Çalışmanın kod bölümüne aşağıdaki kodu eklersek toplama alıştırmaları üretebiliriz.

[linkler sadece üyelerimize görünmektedir.]

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)
   cells(a+1,b-1)="+"    ' bu satır yeni eklendi.
   next b
next a
 


Çıkarma Alıştırma Sayfası
Çalışmanın kod bölümüne aşağıdaki kodu eklersek çıkarma alıştırmaları üretebiliriz.

[linkler sadece üyelerimize görünmektedir.]

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
YenidenSayiUret:
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)

   If cells(a,b)<=cells(a+1,b) then
   GoTo YenidenSayiUret 
   End If

   cells(a+1,b-1)="-"   
   next b
next a





Sonraki Dersimiz
Sonraki derste çalışma kağıdımızda toplama alıştırmaları mı çıkarma alıştırmaları mı sorulacağını isteğe bağlı hale getireceğiz. 

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 15:02:08
ÇOK ÖNEMLİ BİR NOT
Kodlar ilk zamanlar çok karmaşık gelebilir, sizin için hiçbir şey ifade etmeyebilir. Ancak çoğu programcı bu şekilde başlar program yazmaya. İlk zamanlar hazır kodlar üzerinde küçük değişiklikler yaparak ilerleyebilirsiniz. Çok uzun süre döngü veya koşul durumlarında bile kopyala yapıştır yapmak zorunda kalabilirsiniz. Ancak sabırla devam ederseniz amacınıza ulaşabilirsiniz. Program yazmak büyük bir sabır ve dikkat ister. Ama çok keyiflidir.

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 15:19:50
Ek Bilgi 11 (InputBox)
Sonraki ders için bu bilgiyi de paylaşmak gerekir. InputBox ile kullanıcıdan bilgi girişi alabiliriz. Bu alınan bilgiyi bir değişkene atayarak kullanabiliriz. Şimdi Cevap adında bir değişken tanımlayacağız ve bu değişkenin değerini kullanıcıdan isteyeceğiz.

Cevap = InputBox("Bir işlem seçiniz. (+,-)")

Yukarıdaki kod ile kullanıcının açılan iletişim kutusunda yaptığı giriş Cevap değişkenine atanacak. Kullanıcının + veya - girişine göre yapacağımız işleme karar vereceğiz.


yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 15:31:33
Programın Taslağı

Kullanıcıya hangi işlemi istediğini soracağız ve ona göre işlem yapacağız. Taslak aşağıdaki gibi olacak:



Cevap = InputBox("Bir işlem seçiniz. (+,-)")



   If Cevap="+" Then

   ' toplama alıştırmaları üreten kodlar buraya yazılacak.

   End If





   If Cevap="-" Then

   ' çıkarma alıştırmaları üreten kodlar buraya yazılacak.

   End If

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 16:25:29
Toplama ve Çıkarma Programı

Programımızı kullanıcı hangi işlemi isterse o işleme uygun alıştırmalar üretilecek şekilde tasarladık.

Yukarıda paylaştığımız taslağın içine daha önce hazırladığımız toplama ve çıkarma alıştırmaları hazırlayan kodları uygun alanlara ekleyelim.







Cevap = InputBox("Bir işlem seçiniz. (+,-)")



   If Cevap="+" Then

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)
   cells(a+1,b-1)="+"    ' bu satır yeni eklendi.
   next b
next a     

   End If





   If Cevap="-" Then

for a=4 to 29 step 5 ' 4. satırdan başlayarak beşer artııyor.
   for b=4 to 20 step 4 '4. sütundan başlayarak dörder artıyor.
YenidenSayiUret:
   cells(a,b)=sayiuret(99,1)
   cells(a+1,b)=sayiuret(99,1)

   If cells(a,b)<=cells(a+1,b) then
   GoTo YenidenSayiUret 
   End If

   cells(a+1,b-1)="-"   
   next b
next a

   End If




Programımız Tamamlandı
İlk etkileşimli programımızı hazırladık. Dersleri adım adım takip ettiyseniz son oluşan excel dosyasına yukarıdaki kodları ekleyebilirsiniz. Üzerinde oynamalar, değişiklikler yapabilirsiniz. Aralıkları değiştirebilirsiniz. Örneğin sayiuret(99,1) kodunu sayiuret(9,1) ile değiştirirseniz çalışma 1. sınıfın başlangıç seviyesine uygun hale gelir, sayiuret(999,100) yaparsanız da 3. sınıfa uyarlamış olursunuz. Şimdilik bu kadar. Dersi takip edenler hazırladıkları programı buraya ekleyebilirler. Faydalı olması dileğiyle.

kaon55

  • Uzman Üye
  • *****
  • İleti: 2.438
  • Teşekkür 9089
    • Çevrimdışı
  • # 27 Oca 2019 17:02:25
[linkler sadece üyelerimize görünmektedir.] Hocam çalışmalarınız güzel ve faydalı. Bu çalışmaları ayrıca video haline getirip paylaşmayı düşünüyor musunuz?

yunushocam

  • Bilge Meclis Üyesi
  • *****
  • 3. Sınıf Öğretmeni
  • İleti: 1.632
  • Teşekkür 44613
    • Çevrimdışı
  • # 27 Oca 2019 17:06:58
[linkler sadece üyelerimize görünmektedir.]
[linkler sadece üyelerimize görünmektedir.] Hocam çalışmalarınız güzel ve faydalı. Bu çalışmaları ayrıca video haline getirip paylaşmayı düşünüyor musunuz?

İlginiz için teşekkür ederim. Daha önce birkaç başarısız denemem oldu. Videoda o an bir şeyler unutulabiliyor. 5 dakikalık videonun en az 60 dakikalık hazırlığı olmalı. Bu şekilde daha pratik olduğunu düşünüyorum, ancak zamanla ihtiyaç olursa öyle bir çalışma da yapabilirim.

kaon55

  • Uzman Üye
  • *****
  • İleti: 2.438
  • Teşekkür 9089
    • Çevrimdışı
  • # 27 Oca 2019 17:11:57
[linkler sadece üyelerimize görünmektedir.]
İlginiz için teşekkür ederim. Daha önce birkaç başarısız denemem oldu. Videoda o an bir şeyler unutulabiliyor. 5 dakikalık videonun en az 60 dakikalık hazırlığı olmalı. Bu şekilde daha pratik olduğunu düşünüyorum, ancak zamanla ihtiyaç olursa öyle bir çalışma da yapabilirim.
Teşekkür ederim hocam ilginiz için.

smyi

  • Bilge Meclis Üyesi
  • *****
  • 4. Sınıf Öğretmeni
  • İleti: 2.882
  • Teşekkür 15829
    • Çevrimdışı
  • # 27 Oca 2019 17:30:25
başlığınızı takip ediyorum [linkler sadece üyelerimize görünmektedir.] . verdiğiniz bilgiler için teşekkürler.
ben daha önce vba6 ile uğraştığım için bana makrolar kolay geldi.

bakın bu da tek satırlık kodla yazdığım işlem hesaplama programı :)

tabi benimkinde hiçbir denetim, döngü vb yok. makro öğrenmek için sizin açıklamalarınız çok güzel.

 

Egitimhane.Com ©2006-2023 KVKK