• DİKKAT

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

Sayfa yerlerinin değiştirilmesi konusunda yardım !

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,904
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba Arkadaşlar,
Sayın Yusuf44 hocanın çalışmasından bir parçayı uyarlamaya çalıştım, başaramadım. Bir yerde hata yapıyorum sanırım. D sütunundakiler, dosya içindeki sayfaların şu anki durumunun listesi. İstenen ise A32 sütunundan sonraki hali. Bu bölüm manuel olarak değiştirilip makro çalıştığında dosyadaki sayfaların sırası değişsin.
Kod:
Sub Sayfa_Sirala()
Son = [A29]
    For cari = 32 To Son
        For Sayfa = 1 To Sheets.Count - 1
            If Sheets(Sayfa).Name = Cells(cari, "A") Then
                Sheets(Sayfa).Move After:=Sheets(cari + 1)
            End If
        Next
    Next
End Sub

Ornek_TK

Saygılarımla
 

Ekli dosyalar

Merhaba.

Aşağıdaki kod ile yapabilirsiniz.

Kod:
Sub Test()
    Dim Say As Integer
    Dim Bak As Integer
    Dim AktifSayfa As Worksheet
    Set AktifSayfa = ActiveSheet
    Say = Cells(Rows.Count, "A").End(3).Row
    For Bak = 32 To Say
        Worksheets(Cells(Bak, "A").Text).Move after:=Worksheets(Bak - 31)
    Next
    AktifSayfa.Activate
End Sub
 
Sayın Dalgalıkur Hocam,
İlginize teşekkür ederim. Resimdeki hatayı verdi.
Saygılarımla
 

Ekli dosyalar

  • Ornek_TK.jpg
    Ornek_TK.jpg
    103.1 KB · Görüntüleme: 2
Bir de aşağıdaki kodları deneyin.

Eğer hata verirse hata mesajını da söyleyin.

Kod:
Sub Test()
    Dim Say As Integer
    Dim Bak As Integer
    Dim AktifSayfa As Worksheet
    With ThisWorkbook
        Set AktifSayfa = .ActiveSheet
        Say = AktifSayfa.Cells(Rows.Count, "A").End(3).Row
        For Bak = 32 To Say
            If SayfaVarmi(AktifSayfa.Cells(Bak, "A").Text) Then
                .Worksheets(AktifSayfa.Cells(Bak, "A").Text).Move before:=.Worksheets(.Worksheets.Count)
            End If
        Next
    End With
    AktifSayfa.Activate
End Sub

Function SayfaVarmi(SayfaAdi As String) As Boolean
    Dim Bak As Worksheet
    For Each Bak In ThisWorkbook.Worksheets
        If Bak.Name = SayfaAdi Then
            SayfaVarmi = True
            Exit Function
        End If
    Next
    MsgBox "'" & SayfaAdi & "' adlı sayfa bulunamadı."
End Function
 
Son düzenleme:
Sayın Dalgalıkur Hocam,
İlginize çok teşekkür ederim. Beklediğim oldu. Tek sorun karışmaması gereken sayfaları sona atmış.
Yeri gelmişken bir soru sorayım. Açıp-okutup-geri kapatmanın dışında gizlenmis sütundakileri okumasının bir yolu var mı?
Saygılarımla
 
Son düzenleme:
Taşınmaması gereken birden fazla sayfa olduğunu söylememiştiniz.

Yukarıdaki kodu değiştirdim şimdi tekrar deneyin.

Diğer sorunuzu anlamadım. Biraz açar mısınız?
 
Merhaba Dalgalıkur Hocam,
end with ekledim
bir hata daha var, en sona yerleştirilen yeni oluşan sayfayı doğru yer listede olduğu halde yerine koyamıyor.
Saygılarımla
 
Ben şimdi örnek dosyaya bir sayfa ekledim sayfa ismini de A sütunundaki listeye yazdım, aynen yazdığım sıraya göre sayfaları sıraladı.
 
O zaman benim yaptığımda hata var. İnceler misiniz, lütfen?
Saygılarımla
 

Ekli dosyalar

İlk örnekte sayfa isimleri 32. satırdan başlıyordu onun için kodda şöyle bir satır var; For Bak = 32 To Say buradaki 32 28 ile değiştirilmesi gerekir.

Sayfa isimlerinin başladığı satır değişkenlik göstermiyorsa kodlarda bulunan For Bak = 32 To Say satırını For Bak = 28 To Say yapmanız yeterli.
 
Ben nümerik sayfaları A32 den başlatmıştım. Bu dediğiniz aklıma gelmedi. İlginize ve sabrınıza çok teşekkür ederim.
Saygılarımla
 
İyi çalışmalar arkadaşım
Saygılarımla
 
Geri
Üst