• DİKKAT

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

userform ile veri ekledikten sonra alfabetik sıralama

Katılım
19 Mart 2010
Mesajlar
144
Excel Vers. ve Dili
Office 365 İngilizce
İyi günler değerli üstadlar,

Çalışma kitabımda bir sayfayı verilerin olduğu sayfa olarak ayarladım. Bu sayfanın bir sütununda para birimleri, bir sütununda müşteri isimleri, bir sütununda tedarikçi isimleri yer alacak. Her bir veri için veri sayısı farklı ama. Örneğin müşteri sayısı 5 iken tedarikçi sayısı 7 gibi.

Ben bu alanlara manuel giriş yapılmasın diye userform ile yeni müşteri adı ekliyorum. Ama istiyorum ki kaydet diyip yeni müşteriyi en alta ekledikten sonra o sütunu başlık hariç a'dan z'ye sıralasın. çünkü başka bir userform'da combobox ile o listeden seçim yaptırıyorum ve bulunmasının kolaylaşması için bu sıralamayı yapmam lazım.

Sözün özü, ben kaydet butonunun kodunda en alta nasıl bir kod eklemeliyim ki bu dediğimi yapsın makro işini bitirmeden önce? Kaydet butonu için kullandığım kod aşağıdaki gibi;

Kod:
Private Sub CommandButton1_Click()

Dim ayar As Worksheet

Set ayar = Sheets("Ayarlar")

If txtyenitedarikci.Value = "" Then

MsgBox "LÜTFEN TEDARİKÇİ FİRMA ADINI GİRİNİZ"

Exit Sub

End If

son = ayar.Range("D1").End(xlDown).Row + 1

ayar.Range("D" & son).Value = txtyenitedarikci.Value

Set ayar = Nothing

Unload Me

MsgBox "YENİ TEDARİKÇİ KAYDI BAŞARILI"

End Sub

237778
 
Merhaba.

Aşağıdaki kod ile yapılabilir.

Kod:
Sub Sirala(Kolon As String)
    With ayar.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range(Kolon & ":" & Kolon), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range(Kolon & ":" & Kolon)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Kullanımı.
Kod:
Set ayar = Nothing
satırından önce aşağıdaki satırı ekleyin.
A sütununu sıralamak için
Kod:
Sirala "A"
 
Merhaba.

Aşağıdaki kod ile yapılabilir.

Kod:
Sub Sirala(Kolon As String)
    With ayar.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range(Kolon & ":" & Kolon), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range(Kolon & ":" & Kolon)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Kullanımı.
Kod:
Set ayar = Nothing
satırından önce aşağıdaki satırı ekleyin.
A sütununu sıralamak için
Kod:
Sirala "A"

Muzaffer Bey, sirala makrosunun kodunu yeni bir modül açıp oraya mı ekleyeceğim yoksa ilgili user formun kod sayfasına mı?
 
Ben bu tür soruları cevaplamak istemiyorum.
Neden denemiyorsunuz?
Dosyanızın bozulacağını mı düşünüyorsunuz? Öyleyse dosyanızın bir yedeğini alın üzerinde deneyin.
Deneme yapmaktan çekinirseniz öğrenmeniz mümkün olmaz.
Ben sizin yerinizde olsam ikisini de denerim.
Kolay gelsin.
 
hocam denedim. modüle eklediğimde de hata verdi, formun kod sayfasına eklediğimde de hata verdi.

FORM KOD SAYFASINA EKLEDİĞİMDE VERDİĞİ HATA
237800237801
 
"ayar" değişkeninin ne olduğu önceden tanımlanmamış. ayar yerine Kolon deneyin.
 
Formda bulunan Commandbutton1_Click kodlarını silin aşağıdaki kodları forma kopyalayın.

Kod:
Dim ayar As Worksheet

Private Sub CommandButton1_Click()
    Set ayar = Sheets("Ayarlar")
    If txtyenitedarikci.Value = "" Then
        MsgBox "LÜTFEN TEDARİKÇİ FİRMA ADINI GİRİNİZ"
        Exit Sub
    End If
    son = ayar.Range("D1").End(xlDown).Row + 1
    ayar.Range("D" & son).Value = txtyenitedarikci.Value
    Sirala "A"
    Set ayar = Nothing
    Unload Me
    MsgBox "YENİ TEDARİKÇİ KAYDI BAŞARILI"
End Sub

Sub Sirala(Kolon As String)
    With ayar.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range(Kolon & ":" & Kolon), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range(Kolon & ":" & Kolon)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Formda bulunan Commandbutton1_Click kodlarını silin aşağıdaki kodları forma kopyalayın.

Kod:
Dim ayar As Worksheet

Private Sub CommandButton1_Click()
    Set ayar = Sheets("Ayarlar")
    If txtyenitedarikci.Value = "" Then
        MsgBox "LÜTFEN TEDARİKÇİ FİRMA ADINI GİRİNİZ"
        Exit Sub
    End If
    son = ayar.Range("D1").End(xlDown).Row + 1
    ayar.Range("D" & son).Value = txtyenitedarikci.Value
    Sirala "A"
    Set ayar = Nothing
    Unload Me
    MsgBox "YENİ TEDARİKÇİ KAYDI BAŞARILI"
End Sub

Sub Sirala(Kolon As String)
    With ayar.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range(Kolon & ":" & Kolon), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range(Kolon & ":" & Kolon)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Hocam bu kez de "Application-defined or Object-Defined error" verdi.

237803
 
Geri
Üst