Keypress İle Listedeki Son Kayda Gitmek

30/04/2020, 11:35

accessman

bir dinamik arama metin kutumuz var liste girilen her karakter ile güncelleniyor

ama listede tek eleman kalması için çok fazla karakter girmemiz gerekiyor
mesela arama kutusuna 4 karakter girdikten sonra listede 29 kayıt kalıyor 
...............
Reno Sembol 2010 model 11.000 km
Reno Sembol 2010 model 21.000 km
Reno Sembol 2010 model 31.000 km
...............
.....................
..............
Reno Sembol 2010 model 91.000 km

bizim istediğimiz kayıt en sonda 
biz mouse elimize almadan en son sıradaki kayda keypress ile nasıl gideriz

Kod:
Private Sub ara_KeyPress(KeyAscii As Integer)
On Error Resume Next
    If KeyAscii = 43 Then '+ tuşu
        If (Me.lst_ara.ListCount = 2) Then 'sutun başları yoksa 1 olacak
            Me.lst_ara.Width = 0
            Me.lst_ara.Height = 0
            kayitDegistir CInt(Me.lst_ara.ItemData(1))'sutun başları yoksa 0 olacak
            Me.btn_ek2.SetFocus
            lst_ara.Visible = False
        Else
            Call closingMsgBox("Listede birden fazla kayıt var", "Kayıda Gidilemeyecek", 1)
        End If
    End If
End Sub
bunda bir yerleri değiştirmek lazım ama nereleri
30/04/2020, 11:52

ozanakkaya

Herhangi bir kod girmeden ctrl + shift + 7 ile ilk satıra, ctrl + shift + 1 ile son satıra gidilebilir.
30/04/2020, 11:58

feraz

Liste derken listbox ise alttaki kodu uyarlayabilirsiniz normal Vba da çalışıyor.


ListBox1.Selected(ListBox1.ListCount - 1) = True 'True olursa son satira gider Listboxun

ListBox1.ListIndex = ListBox1.ListCount - 1 'son satira gider Listboxun
30/04/2020, 12:02

accessman

Kod:
Private Sub ara_KeyPress(KeyAscii As Integer)
On Error Resume Next
    If KeyAscii = 43 Then   '+ tuşu
        If (Me.lst_ara.ListCount = 2) Then
            Me.lst_ara.Width = 0
            Me.lst_ara.Height = 0
            kayitDegistir CInt(Me.lst_ara.ItemData(1))
            Me.btn_ek2.SetFocus
            lst_ara.Visible = False
        Else
            Call closingMsgBox("Listede birden fazla kayıt var", "Kayıda Gidilemeyecek", 1)
        End If
    ElseIf KeyAscii = 45 Then   '- tuşu
        If (Me.lst_ara.ListCount >= 2) Then
            Me.lst_ara.Width = 0
            Me.lst_ara.Height = 0
            kayitDegistir CInt(Me.lst_ara.ItemData(Me.lst_ara.ListCount - 1))
            Me.btn_ek2.SetFocus
            lst_ara.Visible = False
        Else
            Call closingMsgBox("Listede birden fazla kayıt var", "Kayıda Gidilemeyecek", 1)
        End If
    Else
        'MsgBox KeyAscii
    End If
End Sub
teşekkürler arkadaşlar şimdilik şöyle çözüm buldum