userform ile veri ekledikten sonra alfabetik sıralama

Katılım
19 Mart 2010
Mesajlar
144
Excel Vers. ve Dili
Office 365 İngilizce
Altın Üyelik Bitiş Tarihi
20-01-2024
İ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
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
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"
 
Katılım
19 Mart 2010
Mesajlar
144
Excel Vers. ve Dili
Office 365 İngilizce
Altın Üyelik Bitiş Tarihi
20-01-2024
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ı?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
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.
 
Katılım
19 Mart 2010
Mesajlar
144
Excel Vers. ve Dili
Office 365 İngilizce
Altın Üyelik Bitiş Tarihi
20-01-2024
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
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
"ayar" değişkeninin ne olduğu önceden tanımlanmamış. ayar yerine Kolon deneyin.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
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
 
Katılım
19 Mart 2010
Mesajlar
144
Excel Vers. ve Dili
Office 365 İngilizce
Altın Üyelik Bitiş Tarihi
20-01-2024
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
 
Üst