- 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
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
[/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ı
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?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
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
................................
ö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ı