• DİKKAT

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

Listedeki İsimlere Göre Sayfa Sıralaması

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
975
Excel Vers. ve Dili
Excel-2003
Ekli dosyada ANA MENÜ sayfasındaki isimlere göre kart açıyorum. Fakat Bazen listedeki isimlerin sıralamasını değiştirmek zorunda kalıyorum. Bu nedenle açılan kartların sıralaması ile listedeki sıralama aynı olmuyor.
Sizlerden mümkünse İstediğim ANA MENÜ sayfasındaki isimlerin sıralamasına göre sayfalar sıraya girsin. Bazı isimleri en sona alıyorum ki kartı en sona gitsin diye.
 

Ekli dosyalar

Aşağıdaki makroyu deneyiniz:

Kod:
Sub sayfasırala()
Set S1 = Sheets("ŞABLON")
Set S2 = Sheets("RAPORLAR")
Set S3 = Sheets("ANA MENÜ")

Son = S1.Cells(Rows.Count, "B").End(3).Row

For cari = 2 To Son
    For Sayfa = 1 To Sheets.Count
        If Sheets(Sayfa).Name = S3.Cells(cari, "B") Then
            Sheets(Sayfa).Move After:=Sheets(cari + 1)
        End If
    Next
Next

End Sub
 
Teşekkürler Yusuf44 Arkadaşım
İyi çalışmalar
 
Çok teşekkür ederim. Gayet güzel olmuş..
 
Bir şey söylemek istiyorum. Gayet güzel sıralıyor listeye göre ama ANA MENÜ sayfasını da sıralamaya dahil ediyor. A serisine sokuyor
SIralanmasını istemediğim sayfalar

ŞABLON
Açıklama
RAPORLAR
Tahsil Raporlama
ANA MENÜ

Bunlar sabit kalacak..

Birde benim listem 135 kişilik ama en sondakini sıralamaya dahil etmiyor ve üzerindekileri.
 
Kodları aşağıdaki gibi revize edin.
Sayfa isimleri ANA MENÜ sayfasının B sütununda ise sıralar. Yoksa en sonda kalır.
Kod:
Sub sayfasırala()
Set S1 = Sheets("ŞABLON")
Set S2 = Sheets("RAPORLAR")
Set S3 = Sheets("ANA MENÜ")

Son = S3.Cells(Rows.Count, "B").End(3).Row
Sheets("ŞABLON").Move After:=Sheets(1)
Sheets("RAPORLAR").Move After:=Sheets(2)
Sheets("ANA MENÜ").Move After:=Sheets(3)
For cari = 2 To Son
    For Sayfa = 1 To Sheets.Count
        If Sheets(Sayfa).Name = S3.Cells(cari, "B") Then
            Sheets(Sayfa).Move After:=Sheets(cari + 2)
        End If
    Next
Next

End Sub
 
Verdiğim ilk kod örnek dosyanızda doğru sonucu vermişti. Örnek dosyanızla aynı yapıda olmayan asıl dosyada farklı sonuç vermesi normaldir.

Kod örnek dosyanıza göre ilk 3 sayfa (ana menü, şablon, raporlar) en başta olacak şekilde iken ana menüdeki kişileri sıralamaktadır. Ana menünün B sütunundaki tüm kişileri eğer sayfa varsa sıralar. ana menüdeki isim listesiyle dosyanızdaki sayfalar uyumlu değilse hatalı sonuç vermesi normaldir.

Sayın askm'nin verdiği kodlardan yola çıkarak aşağıdaki kodu hazırladım. İnceleyiniz:
Kod:
Sub sayfasırala()
Set S1 = Sheets("ŞABLON")
Set S2 = Sheets("Açıklama")
Set S3 = Sheets("RAPORLAR")
Set S4 = Sheets("Tahsil Raporlama")
Set S5 = Sheets("ANA MENÜ")

S1.Move Before:=Sheets(1)
S2.Move After:=Sheets(1)
S3.Move After:=Sheets(2)
S4.Move After:=Sheets(3)
S5.Move After:=Sheets(4)

Son = S5.Cells(Rows.Count, "B").End(3).Row

For cari = 2 To Son
    For Sayfa = 6 To Sheets.Count
        If Sheets(Sayfa).Name = S5.Cells(cari, "B") Then
            Sheets(Sayfa).Move After:=Sheets(cari + 3)
        End If
    Next
Next

End Sub
 
Son düzenleme:
Sayın askm kodunuz tamam oldu teşekkür ederim fakat belirlenen sayfaları sabitlemedi oda normal sıralanmasını istemediğim sayfaların sabitlenmesine ait düzenlemeyide sayın Yusuf düzenlemiş...
Ben sadece şu kodu en başa aldım
Application.ScreenUpdating = False
Bayağ titreme yapıyor çoklu listede..
Her ikinize de teşekkür ederim. Sağolun..Buda tamam :)
 
Son düzenleme:
Verdiğim ilk kod örnek dosyanızda doğru sonucu vermişti. Örnek dosyanızla aynı yapıda olmayan asıl dosyada farklı sonuç vermesi normaldir.

Kod örnek dosyanıza göre ilk 3 sayfa (ana menü, şablon, raporlar) en başta olacak şekilde iken ana menüdeki kişileri sıralamaktadır. Ana menünün B sütunundaki tüm kişileri eğer sayfa varsa sıralar. ana menüdeki isim listesiyle dosyanızdaki sayfalar uyumlu değilse hatalı sonuç vermesi normaldir.

Sayın askm'nin verdiği kodlardan yola çıkarak aşağıdaki kodu hazırladım. İnceleyiniz:
Kod:
Sub sayfasırala()
Set S1 = Sheets("ŞABLON")
Set S2 = Sheets("Açıklama")
Set S3 = Sheets("RAPORLAR")
Set S4 = Sheets("Tahsil Raporlama")
Set S5 = Sheets("ANA MENÜ")

S1.Move Before:=Sheets(1)
S2.Move After:=Sheets(1)
S3.Move After:=Sheets(2)
S4.Move After:=Sheets(3)
S5.Move After:=Sheets(4)

Son = S5.Cells(Rows.Count, "B").End(3).Row

For cari = 2 To Son
    For Sayfa = 6 To Sheets.Count
        If Sheets(Sayfa).Name = S5.Cells(cari, "B") Then
            Sheets(Sayfa).Move After:=Sheets(cari + 3)
        End If
    Next
Next

End Sub

Yusuf bey,
Sonradan Sayfalar ekledim bunları sıralamaya dahil etmemesini istiyorum ama revize edemedim.
En başta ve sıralamaya dahil edilmeyecek sayfalar

Aylık Muhasebe Rapor1
Aylık Muhasebe Rapor2
Aylık Muhasebe Rapor3
 
Geri
Üst