Belirlenen sayfalar istediğim sıraya yerlştirdiktan sonra diğerlerini ada göre sırala

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Aşağıda Sayın LeventM in Çalışma sayfalarını ada göre sıralayan makrosu var
Alternatif olarak aşağıdaki koduda deneyebilirsiniz. Gizli sayfalarıda sıraladığı gibi Türkçe karakterlerde de bir sorun olmayacaktır.

Kod:
Sub sayfasirala()
Application.ScreenUpdating = False
Sheets.Add
ActiveSheet.Move After:=Sheets(Sheets.Count)
Set s1 = Sheets(Sheets.Count)
For a = 1 To Sheets.Count - 1
s1.Cells(a, "a") = Sheets(a).Name
s1.[a:a].Sort Key1:=s1.[a1]
deg = Sheets(a).Name
If IsNumeric(deg) = True Then deg = Val(Sheets(a).Name)
say = WorksheetFunction.Match(deg, s1.[a:a], 0)
Sheets(a).Move Before:=Sheets(say)
Next
Application.DisplayAlerts = False
s1.Delete
End Sub
ancak bu sıralamadan bazı sayfaları muaf tutmak yada yada onları önce onları sıralayıp diğer sayfaları ardında sırlamak mümkünmüdür?

Mesala aşağıdaki dizideki sayfalar dizideki sırasına göre 1 den 7 ye kadar sıralanacak daha sonra gelen sayfalar ise sıraya dizilecek

Kod:
[B](General)(Declarations)[/B]
...............................
Public ckBU_Klc_SfAd() As Variant        'bu kitapta daima kalacak sayfa adları
Public ckBU_Klc_SfIx As Integer          'bu kitapta daima kalacak enson indeks no
Public ckBU_Klc_SfSy As Integer          'bu kitapta daima kalacak sayfa sayısı
.................................
Kod:
Sub DegiskenAl()
............................................
ckBU_ss = ckBU.Worksheets.Count                  'bu kitabın sayfa sayısı
'//////////////////////Dizilerle ilgili değerler
'daima bu kitapta kalacak sayfa adlarına ait dizi
[color=Red][B]ckBU_Klc_SfAd = Array(ckBU_sfSAT.Name, ckBU_sfALS.Name, ckBU_sfTNM.Name, ckBU_sfTSB.Name, _
                      ckBU_sfAYL.Name, ckBU_sfYIL.Name, ckBU_sfDVR.Name)  'daima bu kitapta kalacak sayfa adları
[/color][/B]
ckBU_Klc_SfIx = UBound(ckBU_Klc_SfAd)
ckBU_Klc_SfSy = ckBU_Klc_SfIx + 1
................................
[/QUOTE]

örneğinde
ckBU_sfSAT.Name> 1. sırada
ckBU_sfALS.Name> 2. sırada
ckBU_sfTNM.Name> 3. sırada
ckBU_sfTSB.Name> 4. sırada
ckBU_sfAYL.Name> 5. sırada
ckBU_sfYIL.Name> 6. sırada
ckBU_sfDVR.Name> 7. sırada
0111 >8. sırada
0211 >9. sırada
0311 >10. sırada
0511 >12.sırada
0611 >13.sırada
0411 > 11. sırada
0711 > 14. sırada gibi
1011 >17.sırada
2011 >22.sırada
0811 >15.sırada
0911 >16.sırada
1111 >18.sırada
1511 >22.sırada
1311 >20.sırada
1211 >19.sırada
1411 >21.sırada

işte hangi sıra geliyorsa o şekilde olmalı
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sayın Fpcnin dizideki değerler comboboxta listelenmesin soruma verdiği cevapla birleştirilebilir gibi geldi ama bende o yetenek yok
1) önce dizideki sayfa adları dizi indeks nosuna göre sıralanıp
2) sonra diğer sayfa adları A dan Z ye sıralanacak ama Nasıl?
Kod:
Private Sub UserForm_Initialize()
Dim s1 As Worksheet: Dim s2 As Worksheet: Dim s3 As Worksheet
Dim s4 As Worksheet: Dim s5 As Worksheet
Dim arrSh()
Dim i%, j%, x%
Set s1 = Sheets("Sayfa1"): Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3"): Set s4 = Sheets("Sayfa4")
Set s5 = Sheets("Sayfa5")


 arrSh = Array(s1.Name, s2.Name, s3.Name) 


'MsgBox s1.Name
For i = 1 To Sheets.Count
    For j = 0 To UBound(arrSh)
        If Sheets(i).Name = arrSh(j) Then: x = x + 1
    Next j
        If x = 0 Then
           ComboBox1.AddItem Sheets(i).Name
        End If
    x = 0
Next i
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Yapmak istediğim olanaksız mı acaba
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
güncel.........
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
çözümsüz herhalde?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Arkadaşlar istediğim mümkün mü acaba?
 
Üst