• DİKKAT

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

bi makroyu belirli sayfalar hariç diğerlerine uygulama

Katılım
17 Mayıs 2012
Mesajlar
102
Excel Vers. ve Dili
Office 2019, Türkçe
ezcel dosyamda verileri sıralama ile ilgli aşağıdaki makrom var. bu makroyu "veri" ve "tarih" isimli sayfalarım hariç diğer sayfalara tek seferde uygulamam için koda nasıl bir ekleme yapmam lazım?
http://s7.dosya.tc/server3/mowtj4/XXXX.XLSX.html
Sub ilçe10suçsırala()

'

' ilçe10suçsırala Makro

Range("A5:N14").Sort [J5], xlDescending

Selection.Font.Bold = True

Range("A16:N25").Sort [J16], xlDescending

Selection.Font.Bold = True

Range("A27:N36").Sort [J27], xlDescending

Range("A38:N47").Sort [J38], xlDescending

Range("A49:N58").Sort [J49], xlDescending

Range("A60:N69").Sort [J60], xlDescending

Range("A71:N80").Sort [J71], xlDescending

Range("A82:N91").Sort [J82], xlDescending

Range("A93:N102").Sort [J93], xlDescending

Range("A104:N113").Sort [J104], xlDescending

Range("A115:N124").Sort [J115], xlDescending

Range("A126:N135").Sort [J126], xlDescending

Range("A137:N146").Sort [J137], xlDescending

Range("A148:N157").Sort [J148], xlDescending

Range("A159:N168").Sort [J159], xlDescending

Range("A170:N179").Sort [J170], xlDescending

Range("A181:N190").Sort [J181], xlDescending

Range("A192:N201").Sort [J192], xlDescending

Range("A203:N212").Sort [J203], xlDescending

Range("A214:N223").Sort [J214], xlDescending

Range("A225:N234").Sort [J225], xlDescending

Range("A236:N245").Sort [J236], xlDescending

Range("A247:N256").Sort [J247], xlDescending

Range("A258:N267").Sort [J258], xlDescending

Range("A269:N278").Sort [J269], xlDescending

Range("A280:N289").Sort [J280], xlDescending

Range("A291:N300").Sort [J291], xlDescending

Range("A302:N311").Sort [J302], xlDescending

Range("A313:N322").Sort [J313], xlDescending

Range("A324:N333").Sort [J324], xlDescending

Range("A335:N344").Sort [J335], xlDescending

Range("A346:N355").Sort [J346], xlDescending

Range("A357:N366").Sort [J357], xlDescending

Range("A368:N377").Sort [J368], xlDescending

Range("A379:N388").Sort [J379], xlDescending

Range("A390:N399").Sort [J390], xlDescending

Range("A401:N410").Sort [J401], xlDescending

Range("A412:N421").Sort [J412], xlDescending

Range("A423:N432").Sort [J423], xlDescending

Range("A434:N443").Sort [J434], xlDescending

Range("A445:N454").Sort [J445], xlDescending

Range("A456:N465").Sort [J456], xlDescending

Range("A467:N476").Sort [J467], xlDescending





'

End Sub
 
Son düzenleme:
Merhaba.

Sorularınızı gerçek belgenizin, özel bilgi içermeyen küçük bir kopyası şeklinde hazırlayacağınız örnek belge üzerinden sorarsanız daha hızla sonuca ulaşırsınız.
Örnek belge yükleme yöntemine ilişkin kısa açıklama cevabımın altındaki İMZA bölümünde var.

İşlemin tetiklenmesini neyle yapacaksınız bu net değil ama,
tetiklemeyi sayfalara ekleyeceğiniz bir düğmeyle yapacaksanız; aşağıdaki kod'u boş bir Module yapıştırın
ve bu düğmeler ile aşağıdaki makroyu ilişkilendirin.

Anladığım kadarıyla sayfalarınızda 5'inci satırdan başlayarak ve tablolar arasında birer satırlık boşluk olacak şekilde
9 satırlık (A sütunundan N sütununa kadar) gruplar halinde tablolar var.
Kod'u sayfalarınızın yapısının böyle olduğunu düşünerek aşağıdaki gibi hazırladım.
.
Kod:
[B]Sub ilce10sucsirala()[/B]
[COLOR="red"]Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual[/COLOR]
For brn = 1 To ThisWorkbook.Sheets.Count
    If Sheets(brn).Name <> "veri" And Sheets(brn).Name <> "tarih" Then
        For sat = 5 To Sheets(brn).Cells(Rows.Count, 1).End(3).Row
            Sheets(brn).Range("A" & sat & ":N" & sat + 9).Sort Sheets(brn).Cells(sat, "J"), 2
            sat = sat + 10
        Next
    End If
Next
[COLOR="Red"]Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "Sayfalarda gerekli sıralama yapıldı.", vbInformation, "..:: Ömer BARAN ::.."[/COLOR]
[B]End Sub[/B]
 
Sayfa yapılarınızın önceki cevabımda belirttiğim gibi olduğunu varsayıyorum.

Örneğin ismi veri veya tarih olmayan sayfa aktif olduğunda (yani sayfalar arasında geçiş yapıldığında);
aktif sayfada bu işlemin yapılmasını isterseniz (kod, sayfanın aktif edilmesiyle tetiklenir ve aktif sayfada istenilen işlemi gerçekleştirlir, tabi ki isim kontrolü yapılıyor olacak) ;

Aşağıdaki kod blokunu; ALT+F11 tuşlarına basarak görüntüleyeceğiniz VBA ekranında,
sol üst taraftaki ThisWorkbook (veya BuÇalışmaKitabı) 'a çift tıklayıp, sağdaki boş alana aşağıdaki kod'u yapıştırmanız yeterli olur.
.
Kod:
[B]Private Sub Workbook_SheetActivate(ByVal Sh As Object)[/B]
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
    If ActiveSheet.Name <> "veri" And ActiveSheet.Name <> "tarih" Then
        For sat = 5 To ActiveSheet.Cells(Rows.Count, 1).End(3).Row
            ActiveSheet.Range("A" & sat & ":N" & sat + 9).Sort ActiveSheet.Cells(sat, "J"), 2
            sat = sat + 10
        Next
    End If
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
[B]End Sub[/B]
 
Merhaba.

Sorularınızı gerçek belgenizin, özel bilgi içermeyen küçük bir kopyası şeklinde hazırlayacağınız örnek belge üzerinden sorarsanız daha hızla sonuca ulaşırsınız.
Örnek belge yükleme yöntemine ilişkin kısa açıklama cevabımın altındaki İMZA bölümünde var.

İşlemin tetiklenmesini neyle yapacaksınız bu net değil ama,
tetiklemeyi sayfalara ekleyeceğiniz bir düğmeyle yapacaksanız; aşağıdaki kod'u boş bir Module yapıştırın
ve bu düğmeler ile aşağıdaki makroyu ilişkilendirin.

Anladığım kadarıyla sayfalarınızda 5'inci satırdan başlayarak ve tablolar arasında birer satırlık boşluk olacak şekilde
9 satırlık (A sütunundan N sütununa kadar) gruplar halinde tablolar var.
Kod'u sayfalarınızın yapısının böyle olduğunu düşünerek aşağıdaki gibi hazırladım.
.
Kod:
[B]Sub ilce10sucsirala()[/B]
For brn = 1 To ThisWorkbook.Sheets.Count
    If Sheets(brn).Name <> "veri" And Sheets(brn).Name <> "tarih" Then
        For sat = 5 To Sheets(brn).Cells(Rows.Count, 1).End(3).Row
            Sheets(brn).Range("A" & sat & ":N" & sat + 9).Sort Sheets(brn).Cells(sat, "J"), 2
            sat = sat + 10
        Next
    End If
Next
[B]End Sub[/B]

öncelikle ilginiz için teşekkürler. kodunuzu uyguladım ama sayfa dondu sadece. dosyayı yükledim. tüm sayfaları koymadım. norrmalde 80 küsür sayfa var.
ilçe isimlerinin altındaki başlıkların j sütununa göre büyükten küçüğe sıralanmasını istiyorum. her sayfa da tablo farklı satırlarda bitiyor ondanda bilginiz olsun.

http://s7.dosya.tc/server3/mowtj4/XXXX.XLSX.html
 
Sayfa yapılarınızın önceki cevabımda belirttiğim gibi olduğunu varsayıyorum.

Örneğin ismi veri veya tarih olmayan sayfa aktif olduğunda (yani sayfalar arasında geçiş yapıldığında);
aktif sayfada bu işlemin yapılmasını isterseniz (kod, sayfanın aktif edilmesiyle tetiklenir ve aktif sayfada istenilen işlemi gerçekleştirlir, tabi ki isim kontrolü yapılıyor olacak) ;

Aşağıdaki kod blokunu; ALT+F11 tuşlarına basarak görüntüleyeceğiniz VBA ekranında,
sol üst taraftaki ThisWorkbook (veya BuÇalışmaKitabı) 'a çift tıklayıp, sağdaki boş alana aşağıdaki kod'u yapıştırmanız yeterli olur.
.
Kod:
[B]Private Sub Workbook_SheetActivate(ByVal Sh As Object)[/B]
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
    If ActiveSheet.Name <> "veri" And ActiveSheet.Name <> "tarih" Then
        For sat = 5 To ActiveSheet.Cells(Rows.Count, 1).End(3).Row
            ActiveSheet.Range("A" & sat & ":N" & sat + 9).Sort ActiveSheet.Cells(sat, "J"), 2
            sat = sat + 10
        Next
    End If
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
[B]End Sub[/B]

kodu butona tANIMLAYIP O BUTONA BASTIĞIMDA 2 SAYFA HARİÇ DİĞERLERİNDE UYGULANMASINI İSTİYORUM.
 
Siz deneme yapıp örnek belge yüklerken ikinci bir cevap yazmıştım.
Sayfayı yenileyerek son cevabımdaki şekilde işlem yaparsanız istediğiniz olur.
 
İlle de düğme kullanacağım dediğinize göre bu düğmeyi TARİH veya VERİ isimli sayfaya konumlandıracaksınız diye anlıyorum.

Eğer bu şekilde ise;
-- VERİ veya TARİH sayfasına bir adet METİN KUTUSU/ŞEKİL ekleyin,
-- VBA ekranında, üstteki menü kısmından INSERT=>MODULEyi seçin,
-- sağdaki boş alana ilk cevabımdaki kodu yapıştırın (kod'a küçük ilave yaptım, sayfayı yenileyerek görebilirsiniz)
-- sayfaya eklediğiniz metin kutusuna/şekile fareyle sağ tıklayıp MAKRO ATAyı seçin,
-- ekrana gelecek küçük percerede ilce10sucsirala makrosunun adını seçerek işlemi onaylayın.

Artık bu metin kutusuna/şekile fareyle tıkladığınızda işlem gerçekleşir.
.
 
Geri
Üst