FOR NEXT STATEMENT

İÇİNDEKİLER

1- For Next Nedir?

For Next Döngüsü Nedir

    For Next döngüsü-ifadesi oluşturulmuş kod bloklarının, belirlenen veya istenilen sayıda tekrar tekrar çalıştırılabilmesine olanak verir. Döngünün kaç kere tekrarlanacağına kullanıcı karar verir veya herhangi bir worksheet üzerinde yaptırdığı bir işlemin sonucu olarak döngü sayısını belirleyebilir.

    Örneğin eğer yazılan kod bloğunun 10 kere çalışmasını istersek sadece tekrar sayısı olarak 10 girmemiz yeterli. Veya içinde veri yer alan satırların sayısını başka bir kod ile saydırıp, döngü sayısı olarak atayabiliriz.

For Next Döngüsü Nerede Kullanılır?

    Aslına bakılırsa For Next döngüsünün kullanım alanı biraz da kullanıcının hayal gücü ile sınırlı. Normal çalışma sayfasında yapılabilecek işlemlerin yanısıra, açık olan sayfalar veya workbooklar kapatılabilir. Tek bir kod yardımı ile bütün worksheetler korunabilir, korunan worksheetlerin korunması iptal edilebilir. Makronun içerisine ne kadar girerseniz, For Next döngüsü gibi ifadelerin kullanılabileceği yerleri zamanla kendiniz bulabilecek, akıl yürütebileceksiniz.   For Next Döngüsü For Next Döngüsü For Next Döngüsü For Next Döngüsü For Next Döngüsü

2- Yazım Kuralı ve Kullanım Şekli

    For next döngüsünün kullanılmasında en önemli nokta döngüye girilmeden önce, For-Next bloğunun kaç kere tekrar etmesini istediğimizin bilinmesidir. Bu kapsamda döngünün kaç kere tekrarlanacağını el ile girebilir, ayrıca da döngünün çalışmasını istediğimiz verilerin alanlarını, worksheetleri, workbookları saydırıp, bu sayılan değeri bir değişkene atayabiliriz. Sonra ise bu değişkeni üst sınır veya alt sınır olarak döngü sayısı içerisinde kullanabilir.

    Şimdi en basit şekilde For Next döngüsünün ilk olarak elle, sonra ise değişken atayarak nasıl kurgulandığını inceleyelim.

    1- For Next döngüsünün içinde bulunduğu, tekrar sayısını değer olarak alacak olan değişkendir. Genel itibariyle kullanıcılar tarafından bu değişken “i” (iteration yani tekrar etmek kelimesinin ilk harfi) olarak tanımlanır.  Burada ise daha kolay anlaşılabilir olacağı düşünüldüğü için ‘Sayac’ kelimesi kullanılmıştır. For Next Döngüsü

    2- Bir adet başlangıç hücresi seçilmişir. For Next Döngüsü

    3- Döngü bloğunun ilk satırıdır. Sayac = 1 to 10, yani bu blok çalıştığında Sayac değeri 1 olacak ve her döngü ile 1 artacaktır. Ne zaman ki döngü sayısı 10’u geçer, o zaman döngü kendini tekrar etmeyecek ve Sub-Routine sonlanacaktır. 

    4- Döngü içerisinde seçilmiş olan hücrenin değeri, Sayac değerinin 10 katına eşitlenmiştir. For Next Döngüsü

    5-Döngünün son komutu olarak, seçili hücrenin bir alt hücresi seçilmiştir. For Next Döngüsü

    6- For Next döngüsünün son satırıdır. Burada Sayac değişkeninin buraya yazılması zorunlu değildir. Sadece bir alışkanlık olarak ne üzerinde işlem yapılıyor tekrar görmek amacıyla yazılmıştır. Siz yazmayabilirsiniz, seçim sizin.

 

 

For Next Döngüsü Ornek Gorsel 1

Kodu çalıştırınca ortaya çıkan sonuc.

For Next Döngüsü Ornek Gorsel 2

Gördüğünüz gibi kodu çalıştırınca b sütununda 10 adet  hücreyi Range(“B3”)’ten başlayarak Sayac değişkeninin 10 katı değerlerle dolduruyor.

 

    Yukarıdaki örnekte For ile başlayan döngü içerisinde değerleri elle girdik. Kod herhangi bir yerden gidip bir değer almadı. Şimdiki örnekte ise aynı işlemi A sütünundaki satır sayısını  hesap ettirip, sonra bu değeri bir değişkene atayarak yapacağız. Burada işlenen örnekler her ne kadar basit gibi görünse de esas itibariyle bu işlemlerin temelini kavramak açısından faydalı örneklerdir. Dersin ileri bölümlerinde daha detaylı örnekleri inceleme fırsatımız olacak.

 

    Elimizde Range(“A3:A12”) arasında 1’den 10’a kadar  numaralandırılmış 10 adet hücreden oluşan bir liste var. Şimdi amacımız bu listede içerisinde değer yazılı olan hücreleri saydırmak ve bu değerleri bir değişkene atamak. Sonrasında ise For Next döngüsünde işlemin kaçıncı döngüde olduğunu gösteren Sayac değişkenini, hücre referanslama işlemi esnasında Offset metodunda kullanarak, listenin yanına, seçili hücrenin 10 katı değeri yazdırmak.

    Örneği adım adım inceledeğimizde bu işlmeler daha net bir şekilde aklınıza oturacaktır. 

 

    Yazmış olduğumuz Sub -Routine ile değişenlerin nasıl sayıların yerine kullanıldığını görüyoruz.

For Next Döngüsü Ornek Gorsel 3

Adım adım, Sub-Routine’de numaralandırmış olduğumuz parçaları inceleyerek gidelim.

    1- For Next döngüsünün hangi döngüde olduğunu ihtiva eden değişkenin tanımlanması,

    2- İçinde veri olan A sütunundaki hücrelerin sayısını ihtiva edecek değişkenin tanımlanması ve değerinin otomatik olarak atanması. İlk olarak A3 hücresinin en üstte bulunduğu sütunun en alta kadar olan hücreleri .Count metodu ile saydırılmış ve SatırSayısı değişkenine değer olarak atanmıştır.

     3- A3 hücresi aktif hücre olarak seçilmiştir.

   4- For Next döngüsünün ilk satırıdır. Artık burada Sayac değişkeninin aldığı değerler 1’den başlayıp, SatırSayısı değişkeninin aldığı değere kadar gidebilir. Yani artık döngü sayısı, içinde veri olan satır sayısına eşittir. Burada bu şekilde değişkenleri tam sayılar yerine kullanabiliyoruz.

   5-A sütununda, içerisinde değer olan hücrelerin yanlarına, içlerindeki değerin 10 katını yazdırıyoruz. Burada dikkat etmeniz gereken şey, Offset metodu içerisinde sayac değişkenini rakam gibi kullanarak yazmış olmamız. Bu sayede bir alt hücre seçilmeden, hangi döngünün içerisindeysek o kadar bir alt hücreye offset yapılacak olmasıdır. Sadece şöyle bir ek var. Biz aktif hücre seçerken, içerisinde değer olan A3 hücresini seçtiğimiz için ilk döngü esnasında A3’te yer alan 1 ile 10’u çarpıp B4 hücresine döngümüz hesap sonucunu aktaracaktı. Bu nedenle hemen yanındaki hücreye çarpımı yazdırabilmek adına yani dikey offseti 0 yapabilmek için Sayac-1 yazarak(Sayac değerinden 1 çıkartarak), Y düzleminde yani dikey düzlemde hareketi sıfırladık. .Offset(0,1) yazmak yerine Sayac-1 yazdık. Bu sayede seçilmiş hücrenin hemen bir yanına ilk değeri yazdırabildik.

    *Sayac-1 yazmak yerine 2 farklı alternatif daha gerçekleştirilebilirdi. 

        -İlk alternatif; A3 hücresi yerine A2 hücresinin aktif hücre olarak seçilmesi

        -İkinci alternatif de For Sayac = 0 to SatırSayısı-1 yazmak.

Bu iki değişiklikle de aynı işlemi sorunsuz bir şekilde gerçekleştirebilirdik.  

3- Step Kelimesinin Kullanımı

    For Next döngüsünü kullanırken sayacımız her zaman 1’er 1’er artmak zorunda değildir. Aslında bakarsanız 1’er 1’er de azalabilir. Hatta ve hatta 2’şer 2’şer artacağı gibi 5’er 5’er azalabilir de. Kısaca sayım işlemi biz nasıl istersek o şekilde gerçekleşecektir. Sadece 1’er 1’er artmasını istediğimizde kodu olduğu gibi kullanabilirken, geriye sayım ve 2’şer, 3’er, 10’ar sayım gibi durumlarda ‘STEP’ kelimesini kullanmak mecburiyetindeyiz.

 

Sub Ornek_1()

    Dim i As Integer 

    Range(“A1”).Select

    For i = 1 to 30 

           ActiveCell.Value=i

          ActiveCell.Offset(1,0).Select

    Next i

End Sub

Eğer kodu bu şekilde yazarsak A1 hücresinde A30’a kadar kod 1, 2, 3, 4,…30 diye yazdırır.

 

                                                     For i = 30 to 1 Step -1

Yazarsak bu sefer 30’dan geriye doğru yazdırır.

                                       For i = 1 to 50 Step 10 

Yazarsak bu sefer 10’ar 10’ar yazdırır.

                                                     For i = 30 to 1 Step -5 

Yazarsak bu sefer 30’dan geriye doğru 5’er 5’er düşerek  yazdırır.

                                       For i = 30 to 1 Step -k

Eğer tam sayı tipinde olan bir değişken de varsa yine burada Step kelimesinden sonra kullanılabilir ve bu sefer de girmiş olduğumuz değer o değişkenin büyüklüğü ve negatif ve pozitifliğine göre For döngüsü işlem yürütür.

4- Örnek Uygulama 1;

Açık olan Worksheet’lerin Index Numarası Kullanılarak Kapatılması

    Daha önce işlemiş olduğumuz derslerde nasıl istediğimiz kadar worksheet ekleyebileceğimizi görmüştük. Bu aşamada örnek olarak ilk önce 10 adet  worksheet ekleyeceğiz, sonrasında ise For Next döngüsü kullanarak, sheet(1) dışındaki bütün çalışma sayfalarını kapatacağız. 

For Next Döngüsü Ornek Gorsel 4

 

    Sayfa Ekle Sub Routine’i ile ilk önce 10 adet çalışma sayfası ekliyoruz. Burada istediğiniz sayıda sayfa ekleyebilirsiniz.

 

Sayfa Sil Sub Routine’i ile Eklemiş olduğumuz sayfaları tekrar sadece ilk sayfa dışında sildiriyoruz.

 

 Sayfa değişkenine .Count metodu ile çalışma sayfası sayısını değer olarak atıyoruz. Sonra ise Index değişkenini tanımlıyoruz. Her seferinde çalışma sayfası kapatılmadan önce Excel bize kapatmaya emin misiniz diye sorar. İşte bu soruyu ortadan kaldırmak için, alarmları Sub-Routine’in sonunda tekrar açmak üzere kapatıyoruz. Appliciation.DisplayAlerts=False

 

Sonra Index = Sayfa To 2 Step -1 yazarak, en son eklenen çalışma sayfasından başlamak üzere teker teker çalışma sayfalarını siliyoruz.  Burada Sayfa To 2 yazmamızın nedeni ilk başta açık olan sayfayı yani Sheet(1)’i kapatmak istemiyor olmamızdır. Sheet(11).Delete/Sheet(10).Delete diyerek teker teker sayfa sayısı büyük olandan başlanarak silinir.

 En son olarak yine Alarmları açarak Sub-Routine’i kapatıyoruz.

5- Örnek Uygulama 2;

Sayfa Sayısı Bilinmeyen Bir Workbook İçerisinde, Belirlenen Alanlardaki En Büyük Sayıyı Bulmak ve Bu Sayıyı Bir Liste Halinde Özet Tablosuna Yazdırmak

    Çalıştığımız Workbooklar içerisinden bazen bir sorgulama ile veri çekmemiz gerekebilir. Örneğin şimdi işleyeceğimiz en yüksek değerlerin kopyalanması örneği gibi. Yapılan analizler veya hazırlanan özetler ister illere göre maksimum sıcaklıklar, ister illere göre bir ürünün satış rakamları olsun, rakamlarca tanımlanan verinin ne olduğundan  bağımsız olarak maksimum ve minimum değerler her zaman en çok ulaşılmak istenen değerlerdir.

    Genellikle farklı dilimlere, bölgelere, periyotlara ait değerler farklı worksheetler içerisinde depolanır. İşimiz doğrultusunda bazen maksimum ve minimum değerlere göre özet tabloları hazrılayıp belirli aralıklarla tablolarımızı güncelleştiririz. Çünkü her ay, her hafta, her gün ve hatta her saate göre kullandığımız verilerin değişimi, özet tablolar üzerinde de değişikliklere neden olur. Tamamiyle özet tablolarının güncelleme sıklığı verinin kullanılma, edinilme aralığına ve gereksinim oranına bağlıdır. Mesela döviz değerlendirilmesinde neredeyse her dakikaya göre özet tablolar oluşturulurken, bir ürüne ait il bazlı satış rakamlarının özetlenmesinde aylık hatta dönemlik özet tablolarının hazırlanması yeterli olur. 

    Bu egzersizde worksheet’ler içerisinde yer alan en büyük değerleri bulup bu değerleri bir özet tablosuna kopyalayacağız. Bu kapsamda ilk olarak açık olan workbook içerisine istediğimiz kadar worksheet ekleyip, sonrasında ise “A1” hücresinden(30 Adet Sütun ve 20 Adet Satır) başlayarak farazi birer tablo oluşturacağız. Bu tablolarda yer alan verileri istediğiniz bir ürünün satış rakamı ile bağdaştırabilirsiniz. Mesala X markasının Y marketlerindeki 1 litrelik sütlerinin satış adeti gibi. Sonrasında ise bu farazi tablolar içerisinde yer alan maksimum rakamları bulup, kopyalayıp özet tablomuz içerisine yazdıracağız. 

    Şimdi worksheet ekleme, worksheet silme, açık olan worksheetleri temizleme, 30×20 büyüklükteki her hücreye rastgele değer atama gibi bütün işlemleri gerçekleştiren Sub-Routine’leri tek tek inceleyelim. Bu hazırladığımız Sub-Routine’ler hem geçmişte işlediğimiz konuları hatırlamamızı yardımcı olurken, hem de For Next döngüsünü birden çok kez kullanmamızı sağlayarak konuyu pekiştirmemizde yardımcı olacaktır.

 

1

    Örneğimizde ilk aşama olarak çalıştığımız workbook’a 30 adet sayfa daha ekliyoruz. Burada isterseniz 5 isterseniz 500 adet çalışma sayfası ekleyin hiç farketmez. Biz sadece sayfa isimleri biraz daha okunabilsin ancak aynı zamanda diğer Sub-Routine’lerin sayfalar arasında geçişlerini net bir şekilde görelim diye 30 adet çalışma sayfası eklemeye karar verdik.

For Next Döngüsü Ornek Gorsel 5

2

For Next Döngüsü Ornek Gorsel 6

    1 numaralı işlemi yani sayfa ekleme işlemini bizim için yapan Sayfa_Ekle() Subroutine’i ile 30 adet sayfa ekledik. Artık workbook 33 adet sayfadan oluşmakta. Diyelim ki bize sadece özet sayfası yeterli yani verilerin bulunduğu sayfalara ihtiycımız kalmadı ve boşuna workbook’un dolu olmasını istemiyoruz. İlk sayfa yani Sheets(1) dışında bütün sayfaları silmek istiyoruz. İşte o zaman bu Sub-Routine’i çalıştırabiliriz. Sub-Routine’i inceleyecek olursak;

        1-Sayfa sayısını bünyesinde taşıyacak olan ‘l’ değişkenini tanımlıyoruz ve ‘Count’ metodu ile çalışma sayfası sayısını ‘l’ değişkenine atıyoruz. 

         2-Sayac olarak kullanacağımız ‘p’ değişkenini integer veri tipi olarak tanımlıyoruz.

    3- Her sayfa kapatılmadan önce ‘Sayfayı Kapatmak Konusunda Emin Misiniz?’ uyarı mesajını görmemek için bütün alarmları bu ‘Application.DisplayAlerts=Flase’ kodu ile kapatıyoruz. Artık hiç bir uyarı olmadan bütün sayfalar en büyük numaralı sayfadan başlayarak kapatılacaktır.

         4- Bu kısımda ise For döngüsünü başlatıyoruz. Koşulumuz ise; l yani sayfa sayısından 2 ye kadar birer birer düş ve her yeni rakamı p sayacına eşitle. Çalışma sayfalarını da her döngü ile birlikte büyükten küçüğe olacak şekilde sil. Her döngü ile değişen ‘p’ sayacının değeri Sheets(p) şeklinde kullanıldığında, p numaralı çalışma sayfasının kapatılmasını sağlayacaktır. En son Sheets(2) kapatılır ve sadece Sheet(1) yani özet çalışma sayfası workbook içinde silinmeden kalır.

          5- Bu aşamada ise Application.DisplayAlerts=True yazılarak yapılan herhangi bir işlemde excelin bizden onay almasına tekrar izin veririz. 

3

    Bu Sub-Routine ile beraber artık eklediğimiz sayfalara değer atamaya başlayacağız. Yine numaralandırmış olduğumuz bölümlere tek tek değinerek bu Sub-Routine’i anlamaya çalışalım. 

    1- İlk bölümde her zamanki gibi değişkenleri tanımlıyoruz. Burada k Sayfa sayımızı, n döngümüzün saycını, i Offset metodunda(.Offset(i, j)=.Offset(3,1) gibi) kullanacağımız hücrenin X değerini, j ise Y değerinin yerini tutacak olan değişkenleri tanımlıyoruz. Son olarak da k değişkenine yine .Count ile sayfa sayısını değer olarak atıyoruz.

    2.1- Döngülerin en dış katmanında yer alan For n = 2 To k ile başlıyoruz. Sonrasında döngümüzün değerini Sheets(n) yazarak indeks olarak kullanıyoruz. Yani eğer birinci döngünün içerisindeysek Sheets(1) seçilmiş olacak. Ancak biz burada ilk sayfayı özet olarak kullandığımız için ilk olarak Sheets(2) seçilerek döngümüz çalışmaya başlayacak. Sonrasında ise ActiveCell olarak “A1” hücresini aktif çalışma sayfasında seçiyoruz.

    2.2- For i = 0 To 30 yazarak iç içe olan For Next döngümüzün ikincisine başlıyoruz. Yani ilk olarak Sheet(n) ve Sheets(n) içerisindeki “A1” hücresi aktif olarak seçildikten sonra, hemen bu döngümüz çalışmaya başlıyor ve ilk olarak “i” değerine ‘0’ değeri vererek ilk döngüsüne giriyor. Yani artık n=2 ve i=0 ve sonraki döngüye geçiyoruz. 

    2.3- En içteki döngümüzde koşul yine 2.döngüdeki gibi. Bu sefer de “j” değeri ilk döngüye girdiğinde 0 ile başlıyor. Yani ilk döngü başladığında n = 2, i = 0, j = 0. 

    Peki bu değişkenleri biz en içteki döngüde hücrelere değer vermek amacıyla nasıl kullanıyoruz. 

    Aynı döngülerin dıştan içer giriş sırası gibi ilk önce n numaralı çalışma sayfasını seçiyoruz. Sonrasın buradaki “A1” hücresi etkin hücre olarak seçiliyor. Sonra diğer döngülere girdiğimiz zaman .Offset metodunda kuyllandığımız ilk önce i yani değişkeni, sonra ise j değişkeni Offset metodundaki yerlerini alıyor. Yani ilk döngümüzü çalıştırmaya başladığımız zaman 2.3 numaralı döngünün içindeki kodun aldığı şekil;

Sheet(2).Activate

Range(“a1”).Select

ActiveCell.Offset(i=0, j=0).Value=Int(((500*n)*Rnd)+1) şeklini alıyor. Yani ilk döngüde i ve j sıfır olduğu için otomatik olarak “A1” hücresine rastgele bir değer atanıyor. Sonra en içteki 2.3 numaralı döngü kendini tekrar etmeye başlıyor. Ta ki j değeri 20 oluncaya kadar. Ne zaman ki 2.3 numaralı döngü tam bir tur tamamlıyor bu sefer 2.2 numaralı döngü ikinci döngüsüne başlıyor ve i değeri 1 artarak 0+1 = 1 oluyor. Sonra j=1 iken yine 2.3 numralı döngü tekrar döngüye giriyor. Bu sefer j 30 olduğunda, yani döngüsü tamamladındığında bu sefer 2.1 numaralı döngdü de n değeri 1 artıyor ve n+1=3 oluyor(n başlangıç değeri olaran 2 vermiştik). Yani artık Sheets(3) e geçiliyor. Yine “A1” aktif hücre seçiliyor ve tekrar j=0 ve i = 0 olarak bütün döngü Sheets(3) için devam ediyor. Taki son sayfaya gelinceye kadar. Son sayfada Son hücreye yani ActiveCell.Offset(30,20)’e de rastgele bir değer atandığında ise Sub-Routine iç içe bütün döngülerini tamamlamış oluyor. Yani toplamda i = 20, j = 30, n = 33-1=32 yani 32 x 30 x 20 = 19 200 adet hücreye rastgele değerler atanmış oluyor. 

    Bu değer atama işlemini ve döngülerin iç içe nasıl çalıştığını ekleteki videoda çok daha net bir şekilde görebilirsiniz.

 

For Next Döngüsü Ornek Gorsel 7

*******         ActiveCell.Offset(i,j).Value=Int(((500*i)*Rnd) +1)     *******

    Yukarıdaki değer atama işleminde değer atarken kullanmış olduğumuz yöntemle her döngü ile değişen etkin hücreye rastgele bir tam sayı atayabiliyoz. Burada atadığımız değer 500 ve n değişkeninin çarpımı ile 1 arasında olacaktır. İsterseniz sadece 500 de yazarak 500 ile 1 arasında bir değer atamasını gerçekleştirebilirsiniz. Ancak bizim tablomuz 20 x 30 = 600 hücreden oluşacağı için en az 100 adet tam sayı kendini tekrarlayacaktır. Ayrıca 5000 ile 1 arasında bir değer atamak isteseydik de yine rastgele atanan değerler arasından maksimumu seçtiğimiz için çoğunlukla aynı değer her sayfa için maksimum değer olacağı için n  değişken ile 500 ü çarparak her sayfa için farklı  aralıklarda (1 ile 1000, 1 ile 1500, 1 ile 15000)değer atanmasını amaçladık. Bu sayede her sayfada farklı maksimum değere ulaşılmasını garantilemiş olduk.

 

4

    Yazdığımız bu Sub-Routine ile ilk önce 30 adet sayfa eklediğimiz sonrasında ise Sheets(1) yani 1 numaralı çalışma sayfası dışında bütün çalışma sayfaları içerisinde oluşturmuş olduğumuz 30×20 büyüklüğünde rastgele değerlerden oluşan tabloların içlerinden maksimum değerleri bulacağız ve Sheet(1)’de yer alan bir sütun içine bu maksimum değerleri sıra ile yazdıracağız (“B2” ile başlayan sütun seçilmiştir.). Şimdi Sub-Routine’i parça parça inceleyelim.

    1- Değişkenlerin tanımlanması ve değişkenlere değer atanması. Tek tek harfler yerine burada değişkenlerin temsil ettiği kelimeleri değişken adı olarak kullandık. Ve yine SayfaSayısı değişkenine .Count metodu kullanarak sayfa sayısını değer olarak atadık.

    2- Sub-Routine içerisinde sayfaları, her girdiği döngü sayısı ile sayfa indeks numarasının yerine kullanarak gezmemezi sağlayan For Next döngüsünün ilk satırıdır. Yani dögümüz ilk döngüsü içerisindeyse örneğin sayfa sayımız 33 iken ilk okuduğu maksimum değeri Sheets(33)’te okuyacaktır. Daha sonra Step -1 yazdığımız için okuma işlemi Sheets(32), Sheets(31), …, Sheets(2)’ye kadar geriye doğru devam edecektir. Sheets(1) özet sayfamız olduğu için bu sayfada maksimum değer okumasına gerek yoktur. Bu sebepten döngümüzü Sheets(SayfaSayısı) ile Sheets(2) arası ile sınırlandırdık.

 2.1-Sheets(Sayac) sayfasını seçiyoruz. Sonrasında ise Appliciation.WorksheetFunctions.Max(Taranacak Alanı Giriliyor) metodu ile belirlediğimiz Range(“a1”, Range(“a1”).End(XlToRight).End(XlDown))) aralığındaki maksimum değeri bularak, 1 numaralı kısımda tanımladığımız Max_Deger değişkenine bu bulduğumuz değeri atıyoruz. Artık elimizde Sayac numaralı sayfanın içinde yer alan maksimum değerimiz var. Şimdi ise bu değerin ilgili özet tabloya götürülüp kopyalanması var.

    2.2- Bu kısımda if kullanmamızın tek bir amacı var o da ilk değer atanırken boş olan hücreye değer atayabilmek ve sonrasında da bu değer atadığımız hücreden aşağı doğru sütun boyunca değer atayabiliyor olmak. Kısaca diyoruz ki eğer Sheets(1).Range(“b3”) boşsa o zaman buraya Max_Deger değişkeninin taşıdığı değeri atayalım. 

    2.2.1- Ama Range(“b3”) boş değilse o zaman “b3” sütununun en alt hücresinin bir altına Max_Değer değişkeninin değerini atayalım. 

    Zaten bir sayfa için değer atama işlemi bittikten sonra döngü kendisini tekrar ediyor ve bir sonraki sayfada yer alan maksimum değer bulunarak yine Sheets(1) de yer alan “b2” ile başlayan sütunun en altına ekleniyor.

 

5

    Bu Sub-Routine ile eğer istersek oluşturduğumuz bütün tabloları silebiliriz. Yine Sub-Routine’i sırayla kısım kısım incelersek;

    1- Her zamanki gibi en üstte değişkenlerin tanmlanması var.

    2- Bu kısım ise en büyük numaralı Sheets yani çalışma sayfasından başlayarak içinde yer alan verileri silmemizi sağlayan For Next döngü bloğudur. For Next bloğunun içerisinde bulunduğu döngü numarası Sheets(m) içerisinde yerini alır ve her seferinde hangi dööngünün içindeysek o numaralı çalışma sayfasının içindeki veriler silinir.

    2.1- .ClearContents metodu seçili alanın içeriğini silmemize olanak veren bir metotdur. Range(“a1”, Range(“a1”).End(XlToRight).End(XlDown)) ile a1 hücresinin en üst sol keşesi olduğu, sonsuz sayıdaki veri seçilebilir ve silinebilir. Bizim örneğimizde X=30 ve Y=20 yani toplamda 600 adet veri ihtiva eden hücrelerin içleri temizlendi. Ancak X=1000 ve Y=500 de olsaydı yazdığımız bu dinamik kod ile yine bütün alanı seçip temizlenmesini sağlayabilirdik.

    

 

 

 

Dünya Çapında Araştırmacılara Ait Çalışmaları Okumak İsterseniz https://www.researchgate.net/profile/Ender_Dagdelen adresini Ziyaret Edebilirsiniz. Ana Sayfaya Dönmek İsterseniz De Aşağıdaki Tuşu Tıklayınız.

İyi Çalışmalar…

Soru ve Öneriler İçin;

[email protected]