• DİKKAT

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

Listview basligina tiklayip sayfada siralama

  • Konbuyu başlatan Konbuyu başlatan lapot
  • Başlangıç tarihi Başlangıç tarihi
Katılım
4 Temmuz 2006
Mesajlar
239
Merhaba

ListView basligina tikpayip excel sayfasinda siralama yaptirmak mumkunmu?


Saygilar sunuyorum
 
Listviewin ColumnClick özelliğine
If ColumnHeader.Index = ** Then
satırını yazıp devamına neye göre sıralanacağıyla ilgili kodları yazmanız gerekir. ** yerine sütun numarasını yazın.
Daha detaylı bilgi için bir örnek dosya eklerseniz iyi olur.
İyi çalışmalar.
 
Eğer ListView'e gelen bilgiler A sütunundan başlıyorsa Msgbox ile görüntülen bilgiyi değişkene atayın, sıralama kodlarının içinde kullanın. Benim Şimdi kullandığım bilgisayardaki ofis sorunlu tam kodları gönderemiyorum.
Kod:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
sat = ListView1.ListItems.Count + 1
sut = ColumnHeader.Index
MsgBox Replace(Range(Cells(1, sut), Cells(sat, sut)).Address, "$", "")
End Sub
 
cevabiniz icin tesekkurler fakat problem sizin bilgisayarinizda degil dosyayi eklemeyi unutmusum. Lutfen ekteki dosyayabir goz atin

kodunuzu bendeki dosyada denedim ama galiba soruyu anlatamadim, bendeki Listviewde siralama sorunu yok sadece ListViewde basliga tikladigimda excel syafasindada siralama yapmasini istiyorum.
 

Ekli dosyalar

Son düzenleme:
Merhaba lapot,
Altın üye olmadığım için dosyanızı indiremedim. Sıralamanın hangi sütunda ve hangi kritere göre ( örn. tarihe göre, alfabetik veya numerik bir değerse büyükten küçüğe mi?) yapılacağını ve eğer başlık adına göre sıralama yapılacaksa hangi başlığa tıklanacağını bilmek gerekiyor.
 
Resim olarak ekledim , ilk bes stun olsada olur gerisini ben eklemeye calisirim ornek gorursem.
 

Ekli dosyalar

  • Capture Sort.JPG
    Capture Sort.JPG
    210.7 KB · Görüntüleme: 4
Merhaba lapot,
Maalesef resim de görüntüleyemediğim için örneğinizi inceleyemedim. Ama aşağıda gönderdiğim iki ayrı sütunda sıralama örneğini kendi çalışmanıza uyarlayabilirsiniz. Aslında excelde yapılabilen işlemleri "yeni makro kaydet yöntemiyle " rahatlıkla kaydedip kullanabilirsiniz.

Sub a_sırala() ' A sütununda sıralama
Sheets("Sayfa1").Sort.SortFields.Clear
Sheets("Sayfa1").Sort.SortFields.Add Key:=Range("A2:A" & [A65536].End(3).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A1:K65536")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub



Sub c_sırala() ' C sütununda sıralama
Sheets("Sayfa1").Sort.SortFields.Clear
Sheets("Sayfa1").Sort.SortFields.Add Key:=Range("C2:C" & [A65536].End(3).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A1:K65536")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub
 
Sıralama tek sütunda yapılıp, diğer sütunlar aynı kalacaksa kodlardaki mavi satırları silin. Sıralama bütün sutunlara genişletilecekse kırmızı satırları silin.
Kod:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
[COLOR="Red"]'Eğer tek sütunda sıralama yapulcaksa
sat = ListView1.ListItems.Count + 1
sut = ColumnHeader.Index
adres = Replace(Range(Cells(1, sut), Cells(sat, sut)).Address, "$", "")
bas = Replace(Cells(2, sut).Address, "$", "")[/COLOR]
[COLOR="Blue"]'Eğer Sıralama bütün sutunlara genişletilecekse
sut = ColumnHeader.Index
adres = Range("A1").CurrentRegion.Address
bas = Replace(Cells(2, sut).Address, "$", "")[/COLOR]
  Range(adres).Sort Key1:=Range(bas), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
 
Son düzenleme:
Merhaba lapot,
Maalesef resim de görüntüleyemediğim için örneğinizi inceleyemedim. Ama aşağıda gönderdiğim iki ayrı sütunda sıralama örneğini kendi çalışmanıza uyarlayabilirsiniz. Aslında excelde yapılabilen işlemleri "yeni makro kaydet yöntemiyle " rahatlıkla kaydedip kullanabilirsiniz.

Sub a_sırala() ' A sütununda sıralama
Sheets("Sayfa1").Sort.SortFields.Clear
Sheets("Sayfa1").Sort.SortFields.Add Key:=Range("A2:A" & [A65536].End(3).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A1:K65536")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub



Sub c_sırala() ' C sütununda sıralama
Sheets("Sayfa1").Sort.SortFields.Clear
Sheets("Sayfa1").Sort.SortFields.Add Key:=Range("C2:C" & [A65536].End(3).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A1:K65536")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub

cok tesekkur ediyormum cevabiniz icin fakat bu attiginiz kodun ListView ile baglantisini kuramadim, benim amacim ListView'de basliga tiklayinca hem ListView'de siralama yapabilmek hemde Excel sayfasinda siralama yapabilmek.
 
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Sıralama tek sütunda yapılıp, diğer sütunlar aynı kalacaksa kodlardaki mavi satırları silin. Sıralama bütün sutunlara genişletilecekse kırmızı satırları silin.
'Eğer tek sütunda sıralama yapulcaksa
sat = ListView1.ListItems.Count + 1
sut = ColumnHeader.Index
adres = Replace(Range(Cells(1, sut), Cells(sat, sut)).Address, "$", "")
bas = Replace(Cells(2, sut).Address, "$", "")

'Eğer Sıralama bütün sutunlara genişletilecekse
adres = Range("A1").CurrentRegion.Address
bas = "A2"

Range(adres).Sort Key1:=Range(bas), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

Sizede cok tesekkur ediyorum cevabiniz icin
dediginiz gibi deniyorum olmuyor neden acaba?bir sey mi eksik?
 
Merhaba,
userformun kod sayfasına aşağıdaki kodları kopyalayın ve userformu açıp başlıklardan birine tıklayarak kontrol edin. a sütununu esas alarak a:k sütunları arasında sıralama yapacaktır. Listviewin güncellenmesi için listviewe aldığınız kodları en alta ekleyebilirsiniz. Veya dosya indirme sitelerinden birine yükleyerek linkini verirseniz dosya üzerinde düzenleme yapılabilir. Sayfa ismini ve sütun aralıklarına kendi dosyanıza göre düzenleyin.

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
a_sırala
end sub

Sub a_sırala() ' A sütununda sıralama
Sheets("Sayfa1").Sort.SortFields.Clear
Sheets("Sayfa1").Sort.SortFields.Add Key:=Range("A2:A" & [A65536].End(3).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A1:K65536")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
 
Son düzenleme:
Merhaba,
userformun kod sayfasına aşağıdaki kodları kopyalayın ve userformu açıp başlıklardan birine tıklayarak kontrol edin. a sütununu esas alarak a:k sütunları arasında sıralama yapacaktır. Listviewin güncellenmesi için listviewe aldığınız kodları en alta ekleyebilirsiniz. Veya dosya indirme sitelerinden birine yükleyerek linkini verirseniz dosya üzerinde düzenleme yapılabilir. Sayfa ismini ve sütun aralıklarına kendi dosyanıza göre düzenleyin.

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
a_sırala
end sub

Sub a_sırala() ' A sütununda sıralama
Sheets("Sayfa1").Sort.SortFields.Clear
Sheets("Sayfa1").Sort.SortFields.Add Key:=Range("A2:A" & [A65536].End(3).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A1:K65536")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

bu kod calisti gibi fakat A dan Z ye yapti, Z den A ya da yatirmam lazim. birde bu kodu 12 tane basliga dogru nasil yayarim ? Yani har basliga tiklayince siralama yapmasi icin?

saygilar
 
Merhaba lapot,
Bu şekilde çözüm çok uzar. Benimse o kadar zamanım yok. Siz en iyisi dosyanızı bir yükleme sitesine yükleyip detaylı açıklama yaparak linkini verin.
İyi çalışmalar.
 
Merhaba lapot,
Pek yardım etmiş sayılmam ama teşekkürünüz için teşekkür ederim.:)
Mesajınızda herhengi bir link yok. Bu siteden dosya indiremediğim için bu durumda benden bu kadar. Size kolay gelsin.
 
#12 nolu mesajı karışık yapıştırmışım düzelttim. Bir de yeni şekli ile deneyin.
 
#12 nolu mesajı karışık yapıştırmışım düzelttim. Bir de yeni şekli ile deneyin.

I have tried this but no luck, am I missing someting

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Sıralama tek sütunda yapılıp, diğer sütunlar aynı kalacaksa kodlardaki mavi satırları silin. Sıralama bütün sutunlara genişletilecekse kırmızı satırları silin.
'Eğer tek sütunda sıralama yapulcaksa
sat = ListView1.ListItems.Count + 1
sut = ColumnHeader.Index
adres = Replace(Range(Cells(1, sut), Cells(sat, sut)).Address, "$", "")
bas = Replace(Cells(2, sut).Address, "$", "")
'Eğer Sıralama bütün sutunlara genişletilecekse
adres = Range("A1").CurrentRegion.Address
bas = "A2"
Range(adres).Sort Key1:=Range(bas), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
 
Geri
Üst