• DİKKAT

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

Sıralama Makrosunu bir buton ile değilde otomatik yapabilirmiyiz.

Katılım
8 Haziran 2007
Mesajlar
761
Excel Vers. ve Dili
excel- 2003 Türkçe
Aşağıdaki sıralama makrosu bir buton ile sıralama yapıyor. Benim yapmak istediğim belge her açıldığında sıralama yapsın vey yeni bir isimi eklendiğinde kendi sıralasın.


Sub Makro1()
'
' Makro1 Makro
' Makro . tarafından 30.10.2007 tarihinde kaydedildi.
'

'
Rows("2:325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
End Sub
 
Aşağıdaki kodu ThisWorkbook kod sayfasına yapıştırınız..

Private Sub Workbook_Open()
Sheets("kendi sayfa adınızı yazınız").Select
Rows("2:325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
End Sub
 
Deneme imkanım olmadı ama, çalıştığınız sayfanın Kod Sayfasına aşağıdaki kodları yazın.
D sütununda veri değişikliğinde (Kırmızı yer. İstediğiniz sütunu yazabilirsiniz.) otomatik sıralama yapar.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [[COLOR=red]d:d[/COLOR]]) Is Nothing Then Exit Sub
Rows("2:325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
End Sub
 
kusura bakmayın nereye yapıştıracağımı anlayamadım. (ThisWorkbook) biraz daha açarmısınız
 
Hocam birşey soracağım. Kod bilgim yok. Ama benim 15 veya 25 sütun arasında değişen bir sayfam var. E sutununda SOYADI bölümü, D sütununda ise AD bölümü var. Ben SOYADINA göre alfabetik sıralama yapıyorum. Yukarıdaki kod bu şekilde işime yarar mı. Veya buna göre nasıl uyarlayabiliriz.
 
Sayfa açıkken Alt+F11 tuşuna basınız.. Açılan sayfada göreceksiniz..
Son yazdıklarınızı sonradan farkettim, çalışmanızı eklermisiniz.
 
Kodları şöyle değiştirin. Soyadına göre veri girdikçe otomatik sıralama yapar.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [[COLOR=red]e:e[/COLOR]]) Is Nothing Then Exit Sub
Rows("2:325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
End Sub

aşağıda sayfa isimleri yazan yerde, kodları hangi sayfada kullanacaksanız o sayfanın adının üzerinde sağ klik yapın, açılan pencerede Kod Görüntüle seçin ve kodları açılan Vba penceresine yapıştırın.


/
 
dosya ektedir arkadaşlar

ekteki belge üzerinde anlatmaya çalıştım. begeye veri girişi yapıldığı anda hemen sıralama yapıyor. bunu hemen değilde yani veri girişi yapılıp belge kapandıktan sonra tekrar ilk açıldığında verileri yerleştirmesi mümkün mü aceba.

ikinci bir konu daha var. ben birinci sayfadan ikinci sayfaya veri alıyorum. ama diyelimki birinci sayfanın ortasından bir satırı sildiğimde yani içindeki veriyi değil de satırı tamamen sildiğimde diğer sayfada hata veriyor. bunun bir çözümü var mıdır.
 
Veri girilecek alan sabitmidir, ek satır veya sütun ilave edilecekmi... Birde ilk açıldığında sıralama yapsa yeterli mi?
 
Ya aslında o belge 325 satır üzerinde yani 11. satırdan başlayıp 335. satırda veri girişi bitiyor. ben örnek olsun diye kısa kestim. sutunlar yeterli yani sutun eklenmeyecek. ilk açıldığında sıralama yapması yeterli olur.
 
Dosyanız eklidir..

E325 hücresinde değişiklik yapıldığında (Sn. AS3434 kodu üzerinde değişiklik) ya da sayfa açıldığında çalışacak şekildedir..
 
Son düzenleme:
sıralama yaparken 11. satırdan itibaren yerleştirmeye başlaması için kodun neresini değiştirmek lazım
 
Aşağıdaki satırları değiştiriniz...

ilgili satırı
Rows("2:325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2")
bu şekilde
Rows("11:325").Select
Selection.Sort Key1:=Range("E11"), Order1:=xlAscending, Key2:=Range("D11")
 
teşekkür ederim Sayın htrk şuan biraz iş yoğunluğum var. bir ara uygulayıp denerim. eğer sorun olursa tekrar belirtirim kolay gelsin.
 
Sayın htrk yukarıdaki kodu ben kedi belgeme kopyaladım. ama çalışmadı.
"Personel_Bilgi" adında bir sayfa. Yukarıdaki kodda sayfa ismi falan geçmiyor du değilmi. Ya da benim belgem açılırken İlk olarak ana sayfa adlı sayfa açılıyor ondan olabilir mi
 
Dosyanızda "Sayfa1" seçiliyor... ThisWorkbook kısmında, Sheets("Sayfa1").Select kodu ile değiştirip sayfa adını yazınız... (kırmızı olan satır)

Private Sub Workbook_Open()
Sheets("Sayfa1").Select
Rows("2:325").Select
'Range("B2:CD325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
Range("B2").Select
End Sub
 
Son düzenleme:
Sayın htrk ilginize çok teşekkür ederim. Sizleri yordum ama bu sekilde de çalışmıyor.
 
Çalışmayan makro hangisi; sayfa açıldığında sılayayan mı, yoksa E325 hücresinde değişiklik yapıldığı zaman sıralama yapan makro mudur?
 
Private Sub Workbook_Open()
Sheets("Personel_Bilgi").Select
Rows("2:325").Select
'Range("B2:CD325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
Range("B2").Select
End Sub


yukarıdaki kodu personel_bilgi diye değiştiriyorum.sayfayı açıp kapatıyorum hiçbir değişiklik yapmıyor.
 
Private Sub Workbook_Open()
Sheets("Personel_Bilgi").Select
Rows("2:325").Select
'Range("B2:CD325").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
Range("B2").Select
End Sub


yukarıdaki kodu personel_bilgi diye değiştiriyorum.sayfayı açıp kapatıyorum hiçbir değişiklik yapmıyor.

Bu kodu sayfanın arkasına değil ThisWorkbook sayfasına yapıştırmalısınız... Personel_Bilgi Sayfasında iken sayfa adına sağ tıklayın ve açılan sayfada ThisWorkbook yazısına çift tıklayınız ve açılan kısma kodu yapıştırınız...
Ayrıca hangi satırdan itibaren sıralamasını istiyorsanız o satırın referansını da unutmayınız...

Ya da asıl dosyanızın verilerini değiştirip veya silip ekleyiniz üzerinde düzenleyelim..
 
Son düzenleme:
Geri
Üst