Çalışma Sayfalarını A'dan Z'ye Sırala - Microsoft Excel


Çalışma sayfalarını A'dan Z'ye doğru sıralamaya yarayan makro kodudur.

Kod


Option Explicit

Sub SayfalariSiralaArtan()
    Dim i As Integer
    Dim j As Integer
    
    If Worksheets.Count = 1 Then Exit Sub
    
    For i = 1 To Worksheets.Count - 1
        For j = i + 1 To Worksheets.Count
            If Worksheets(j).Name < Worksheets(i).Name Then
                Worksheets(j).Move Before:=Worksheets(i)
            End If
        Next j
    Next i
End Sub

Kod (Açıklamalı)


Option Explicit

Sub CalismaSayfalariniSiralaArtan()

    '--------------------------------------------------
    'Döngü için değişken tanımladık.
    '--------------------------------------------------
    Dim i As Integer
    Dim j As Integer
    
    '--------------------------------------------------
    'Eğer çalışma kitabında 1 sayfa varsa
    'kodu çalıştırmaya gerek yok, o yüzden
    'böyle bir durum tespit edilirse burada
    'Sub yordamdan çıkış yaptırıyoruz.
    '--------------------------------------------------
    If Worksheets.Count = 1 Then Exit Sub
    
    '--------------------------------------------------
    'İlk baştaki sayfadan itibaren başlayıp
    'son sayfaya kadar çalışacak (en son sayfa
    'dahil değil) döngü yazdık.
    '
    '(Sanırım) bubble sort yani kabarcık sıralama
    'algoritması kullanılarak sıralama yapılmış.
    '--------------------------------------------------
    For i = 1 To Worksheets.Count - 1
    
        '--------------------------------------------------
        'İlk döngüde sayfa seçiliyor, bu döngüde de
        'hep seçilen sayfadan bir sonraki sayfayı
        'seçecek şekilde ayarlama yaptık.
        '
        'Yine ilk döngüde ilk sayfa
        'olaya dahildi ama son sayfa değildi. Bunda durum
        'tam tersi: Başlangıçta ilk sayfa dahil değil ama
        'son sayfa dahil.
        '
        'Peki amaç ne?
        'Sayfa isimlerini ikili olarak karşılaştırmak.
        'İsmi önce gelenin yerinin, gerekiyorsa,
        'değiştirilmesini sağlamak.
        '--------------------------------------------------
        For j = i + 1 To Worksheets.Count
            
            '--------------------------------------------------
            'Eğer i döngüsündeki sayfa ismi j döngüsündeki sayfa
            'isminden daha büyükse (yani A-Z sıralamasında
            'sonra geliyorsa) kod çalışsın.
            '--------------------------------------------------
            If Worksheets(j).Name < Worksheets(i).Name Then
            
                '--------------------------------------------------
                'j döngüsündeki sayfayı i döngüsündeki
                'sayfanın önüne taşı.
                '
                'Bu işlem iki döngü bitene kadar devam edecek.
                'Sonunda bütün sayfalar küçükten büyüğe
                'sıralanmış olacak.
                '--------------------------------------------------
                Worksheets(j).Move Before:=Worksheets(i)
            End If
        Next j
    Next i
End Sub

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba