Çalışma sayfalarını A'dan Z'ye doğru sıralamaya yarayan makro kodudur.
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
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