Excel Userform Da Listbox Nesnesi Alanlarının Biçimlendirmesi Hakkında.

1 2 3 4 5 6 7 8 9 10 11 12 13
16/02/2021, 11:15

Oğuz Türkyılmaz

Merhaba herkese sağlıklı günler dilerim.

Excel çalışmasında düzenlediğim User Form da kayıtları listelediğim Listbox'ın Tutar alanında ki rakamları sağa dayalı yapmak ve ID alanını Büyükten küçüğe sıralamak istiyorum. Bunu nasıl yapabilirim. Yardımlarınız için teşekkür ederim.
Kod:
Dim SonSatir As Variant

Private Sub btn_KayitEkle_Click()

If txt_MasrafTarihi <> "" And Com_Firma <> "" And txt_BelgeNo <> "" And Com_MasrafTuru <> "" And txt_Tutar <> "" Then

    SonSatir = WorksheetFunction.CountA(Worksheets("Ana Sayfa").Range("A:A")) + 1

    If SonSatir = 2 Then

                Worksheets("Ana Sayfa").Cells(SonSatir, 1) = 1
                Worksheets("Ana Sayfa").Cells(SonSatir, 2) = txt_MasrafTarihi.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 3) = Com_Firma.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 4) = txt_BelgeNo.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 5) = Com_MasrafTuru.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 6) = txt_Acıklama.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 7) = CDbl(txt_Tutar)
               
                Else
               
                Worksheets("Ana Sayfa").Cells(SonSatir, 1) = Worksheets("Ana Sayfa").Cells(SonSatir - 1, 1) + 1
                Worksheets("Ana Sayfa").Cells(SonSatir, 2) = txt_MasrafTarihi.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 3) = Com_Firma.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 4) = txt_BelgeNo.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 5) = Com_MasrafTuru.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 6) = txt_Acıklama.Value
                Worksheets("Ana Sayfa").Cells(SonSatir, 7) = CDbl(txt_Tutar)
    End If
               
Else

MsgBox "Giriş Alanlarının Tümünü Doldurunuz", , "Masraf Giriş Formu"

End If

Com_Firma.Value = ""
Com_MasrafTuru.Value = ""
txt_Acıklama.Value = ""
txt_BelgeNo.Value = ""
txt_MasrafTarihi.Value = ""
txt_Tutar.Value = ""


txt_MasrafTarihi = Format(Date, "dd.mm.yyyy")
Com_Firma.SetFocus




End Sub

Private Sub byn_Kapat_Click()

Unload UserForm1

End Sub

Private Sub txt_MasrafTarihi_Exit(ByVal Cancel As MSForms.ReturnBoolean)

txt_MasrafTarihi = Replace(txt_MasrafTarihi, ".", "")
txt_MasrafTarihi = Left(txt_MasrafTarihi, 2) & "." & Mid(txt_MasrafTarihi, 3, 2) & "." & Right(txt_MasrafTarihi, 4)

End Sub

Private Sub UserForm_Initialize()

ListBox1.ColumnCount = 7
ListBox1.RowSource = "MasrafListesi"
ListBox1.ColumnWidths = "30;70;70;70;240;170;70"

txt_MasrafTarihi = Format(Date, "dd.mm.yyyy")

End Sub


17/02/2021, 14:22

feraz

Merhaba.
Rowsource kullandığınız için ya başka sayfada sıralatacaksınız verileri listoxa alacaksınız
yada verilerin alındığı sayfadan.

Rowsource olmadan ise Ado yada dizilerle olabilir.
17/02/2021, 18:11

Oğuz Türkyılmaz

(17/02/2021, 14:22)feraz yazdı: Meehaba.
Rowsource kullandığınız için ya başka sayfada sıralatacaksınız verileri listoxa alacaksınız
yada verilerin alındığı sayfadan.

Rowsource olmadan ise Ado yada dizilerle olabilir.

Verilerin alındığı Excel sayfasında sıralatamıyorum çünkü ID numarasını son boş satırın bir üstündeki dolu satırdaki verinin ID numarasını 1 arttırarak elde ediyorum. Orayı büyükten küçüğe dizersem o boş satıra bakacak ID numarası 1 çünkü en altta ve 2 yi vermeye kalkacak. Halbuki 2 1 in üstünde. Tıkandım o yüzden. Başka sayfaya atıp dizerek deniyim bakalım becerebilecekmiyim.
17/02/2021, 23:31

feraz

Sıralatma kodunuz nedir bilemiyorum lakin normalde boş satırla alakası yok.Dosyayı deneyemedim bu arada tahminen yazdım.

Mesela alttaki gibi kod yazılabilir kodu kafadan yazfım büyük ihtimalle hata verebilir.Birde kodu unuttum descending gibi bişey eklenmesi gerek aklımda yok şuan.
Yada makro kaydet ilede uyarlayabilirsiniz sıralatıp son satırı.
Son = cells(rows.count,1).end(3).row
  range("a2:c" & son).sort range("a2"),header:=no

Bu arada kodu inceledim mobilden sonSatir i son dolunun bir altı olarak buluyorsunuz.Sıralarkende sonSatir -1 yazarsanız boş satırla işiniz olmaz.
18/02/2021, 00:11

berduş

Verileri alırken dizi kullanıp 2. diziye tersten aktarabilirsiniz. 2. dizideki verileri de listeye aktarırsanız sorun kalmaz bence. Internetten liste kutusuna veri aktarımıyla ilgili bilgi bulabilirsiniz.
18/02/2021, 09:05

Oğuz Türkyılmaz

(18/02/2021, 00:11)berduş yazdı: Verileri alırken dizi kullanıp 2. diziye tersten aktarabilirsiniz. 2. dizideki verileri de listeye aktarırsanız sorun kalmaz bence. Internetten liste kutusuna veri aktarımıyla ilgili bilgi bulabilirsiniz.

Berduş Hocam şu an Formdan kaydet tuşuna bastığımda Excel sayfalarına bilginin aktarılması çok zaman alıyor. Aynı kodları defalarca sil baştan yazdım. Dün son işlemde kayıt etmesi yaklaşık 1 dakika sürünce herşeyi sildim. Projeyi sil baştan 4.defa hiçbir kopyalama vs yapmadan adım adım yaparak ilerleyeceğim başlangıçta bir saniye süren işlem bir noktada bozuluyor ve kaydetme süresi 1 dakikaya kadar neden çıkıyor sebebini bulmam lazım. Ondan sonra bu diziler konusuna dönerim. Hız konusunda sıkıntı çıkarırsa da verileri tarihe göre büyükten küçüğe dizdirmem artık yapacak bir şey yok. Teşekkür ederim.
1 2 3 4 5 6 7 8 9 10 11 12 13