Skip to main content

AccessTr.neT


Listbox İle İlgili Sayfaya Gitmek

Listbox İle İlgili Sayfaya Gitmek

#7
(13/06/2019, 13:33)nightashes yazdı: 3- Listboxların üstüne textbox koydum ki istediğim zaman aratma yapabileyim ama bunu da aktif bir hale getiremedim. Acaba text.box a göre arama yı nasıl sağlayabilirim.
TextBox1 arama olayı
Private Sub TextBox1_Change()
'Deneme arama textbox1___________________________
Dim sayfa As Worksheet

ListBox1.Clear
ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50"
For Each sayfa In Worksheets
If sayfa.Name Like "*" & Me.TextBox1.Text & "*" Then ListBox1.AddItem sayfa.Name
Next
'Deneme arama textbox1___________________________bitti
End Sub
textbox 2 için arama hangi sütuna göre yapılacak?
Cevapla
#8
(13/06/2019, 14:57)haliliyas yazdı:
(13/06/2019, 13:33)nightashes yazdı: 3- Listboxların üstüne textbox koydum ki istediğim zaman aratma yapabileyim ama bunu da aktif bir hale getiremedim. Acaba text.box a göre arama yı nasıl sağlayabilirim.
TextBox1 arama olayı
Private Sub TextBox1_Change()
'Deneme arama textbox1___________________________
Dim sayfa As Worksheet

ListBox1.Clear
ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50"
For Each sayfa In Worksheets
If sayfa.Name Like "*" & Me.TextBox1.Text & "*" Then ListBox1.AddItem sayfa.Name
Next
'Deneme arama textbox1___________________________bitti
End Sub
textbox 2 için arama hangi sütuna göre yapılacak?

Kod işe yaradı.
Mümkünse iki kolona görede yapsın. ister kodla aratalım ister adla mümkünse.

* Bu arada büyük harf küçük harf duyarlı sanırım. Nasıl kaldırabiliriz. Yani "Ana" yazmak gerekiyor arama için tam eşleşme istiyor. "ana" diye yazsakda sonuç gelmesi için ne yapmak gerek.
Alıntı:Her şey bir fikirle başlar.
Son Düzenleme: 13/06/2019, 15:10, Düzenleyen: nightashes.
Cevapla
#9
bence 2 sine göre de yapıyor
TextBox2 değiştiğinde olayı
Private Sub TextBox2_Change()
'Deneme arama textbox2___________________________
Dim bolge As Range
Dim SonSatir As Long
SonSatir = Worksheets("Liste-Maliyet").Cells(4, 3).End(xlDown).Row + 4
Set bolge = Worksheets("Liste-Maliyet").Range("B4:C" & SonSatir)
ListBox2.Clear
Dim cell As Range
iCount = 0
For Each cell In bolge
Set cell = bolge.Find(Me.TextBox2.Text, Lookat:=xlPart, SearchOrder:=xlRows, SearchDirection:=xlNext)
ListBox2.AddItem

ListBox2.List(iCount, 0) = Worksheets("Liste-Maliyet").Range("B" & cell.Row)
ListBox2.List(iCount, 1) = Worksheets("Liste-Maliyet").Range("C" & cell.Row)
iCount = iCount + 1
Next
' Finds A3
' Set cell = Range("A1:A3").Find("Apple", Lookat:=xlWhole)
' Debug.Print cell.Address

'Deneme arama textbox2___________________________bitti
End Sub
Cevapla
#10
(13/06/2019, 14:59)nightashes yazdı: * Bu arada büyük harf küçük harf duyarlı sanırım. Nasıl kaldırabiliriz. Yani "Ana" yazmak gerekiyor arama için tam eşleşme istiyor. "ana" diye yazsak da sonuç gelmesi için ne yapmak gerek.

Büyük/küçük harf duyarlı değil diye biliyorum ama bazı Türkçe karakterlerde -İ,ı- sorun çıkartıyor ama "ana" da yazılsa "Ana" da bende sorun çıkarmadı
____________________________________________________oOo______________________________________________________
(13/06/2019, 13:33)nightashes yazdı: 1- İkinci forma listeden aldığım bilgiler verdiğim aralığı alıyor fakat istediğim son satırda bitmesi. Çünkü listede boş satırlarda görünmekte ve bu listeyi çok uzun tutmakta.
Private Sub UserForm_Initialize()
Dim sayfa As Worksheet
Dim SonSatir As Long
SonSatir = Worksheets("Liste-Maliyet").Cells(4, 3).End(xlDown).Row
ListBox1.Clear
ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50"
For Each sayfa In Worksheets
ListBox1.AddItem sayfa.Name
Next
With ListBox2
Do While .ListCount > 0
.RemoveItem 0
Loop
End With

ListBox2.List = Worksheets("Liste-Maliyet").Range("B4:C" & SonSatir).Value
End Sub
____________________________________________________oOo______________________________________________________
(13/06/2019, 13:33)nightashes yazdı: 2- Örnek dosyaya bakarsanız sayfa adlarını ikinci listemde bulunan birinci sutundaki kodlara göre açtım. Bu şekilde yapmak istediğim, eğer o koddaki ürünün sayfası varsa birinci listede bulsun ve hatta o sayfaya gitsin. Eğer sayfa yoksa sayfa bulunamadı gibi bir uyarı verebilir.
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim syfAdi As String
On Error Resume Next
syfAdi = ListBox2.Value
If WorkSheetExists(syfAdi) Then ActiveWorkbook.Sheets(syfAdi).Activate Else MsgBox ("Sayfa mevcut değil")
End Sub
Function WorkSheetExists(ByVal strName As String) As Boolean
On Error Resume Next
WorkSheetExists = Not ActiveWorkbook.Worksheets(strName) Is Nothing
End Function
____________________________________________________oOo______________________________________________________
(13/06/2019, 13:33)nightashes yazdı: 3- Listboxların üstüne textbox koydum ki istediğim zaman aratma yapabileyim ama bunuda aktif bir hale getiremedim. Acaba text.box a göre arama yı nasıl sağlayabilirim.
Private Sub TextBox1_Change()

Dim sayfa As Worksheet
Dim syfAdi, txtArama As String

ListBox1.Clear
ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50"
For Each sayfa In Worksheets
syfAdi = sayfa.Name
txtArama = Me.TextBox1.Text
If InStr(1, syfAdi, txtArama, 1) > 0 Then ListBox1.AddItem sayfa.Name
Next
End Sub

Private Sub TextBox2_Change()

Dim bolge As Range
Dim SonSatir As Long
SonSatir = Worksheets("Liste-Maliyet").Cells(4, 3).End(xlDown).Row + 4
Dim iCount As Long
'Boşsa______________________________
If Len(Me.TextBox2.Text) = 0 Then
ListBox2.List = Worksheets("Liste-Maliyet").Range("B4:C" & SonSatir).Value
Exit Sub
End If
'Boşsa______________________________bitti

Set bolge = Worksheets("Liste-Maliyet").Range("B4:C" & SonSatir)
iCount = 0
ListBox2.Clear
With bolge
Dim C As Range
Set C = .Find(TextBox2.Text, LookIn:=xlValues)
If Not C Is Nothing Then
Dim FirstAddress As String, Rslt As String
FirstAddress = C.Address
Do
ListBox2.AddItem
ListBox2.List(iCount, 0) = Worksheets("Liste-Maliyet").Range("B" & C.Row)
ListBox2.List(iCount, 1) = Worksheets("Liste-Maliyet").Range("C" & C.Row)
iCount = iCount + 1
Set C = .FindNext©
Loop While C.Address <> FirstAddress
End If
End With

End Sub
____________________________________________________oOo______________________________________________________
4. sorunuzun yanıtını henüz bulamadım
dilerim işinize yarar
Cevapla
#11
(13/06/2019, 20:53)halily yazdı:
(13/06/2019, 14:59)nightashes yazdı: * Bu arada büyük harf küçük harf duyarlı sanırım. Nasıl kaldırabiliriz. Yani "Ana" yazmak gerekiyor arama için tam eşleşme istiyor. "ana" diye yazsak da sonuç gelmesi için ne yapmak gerek.

Büyük/küçük harf duyarlı değil diye biliyorum ama bazı Türkçe karakterlerde -İ,ı- sorun çıkartıyor ama "ana" da yazılsa "Ana" da bende sorun çıkarmadı
____________________________________________________oOo______________________________________________________
(13/06/2019, 13:33)nightashes yazdı: 1- İkinci forma listeden aldığım bilgiler verdiğim aralığı alıyor fakat istediğim son satırda bitmesi. Çünkü listede boş satırlarda görünmekte ve bu listeyi çok uzun tutmakta.
Private Sub UserForm_Initialize()
Dim sayfa As Worksheet
Dim SonSatir As Long
   SonSatir = Worksheets("Liste-Maliyet").Cells(4, 3).End(xlDown).Row
ListBox1.Clear
ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50"
For Each sayfa In Worksheets
ListBox1.AddItem sayfa.Name
Next
With ListBox2
   Do While .ListCount > 0
     .RemoveItem 0
   Loop
 End With

ListBox2.List = Worksheets("Liste-Maliyet").Range("B4:C" & SonSatir).Value
End Sub
____________________________________________________oOo______________________________________________________
(13/06/2019, 13:33)nightashes yazdı: 2- Örnek dosyaya bakarsanız sayfa adlarını ikinci listemde bulunan birinci sutundaki kodlara göre açtım. Bu şekilde yapmak istediğim, eğer o koddaki ürünün sayfası varsa birinci listede bulsun ve hatta o sayfaya gitsin. Eğer sayfa yoksa sayfa bulunamadı gibi bir uyarı verebilir.
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim syfAdi As String
On Error Resume Next
syfAdi = ListBox2.Value
If WorkSheetExists(syfAdi) Then ActiveWorkbook.Sheets(syfAdi).Activate Else MsgBox ("Sayfa mevcut değil")
End Sub
Function WorkSheetExists(ByVal strName As String) As Boolean
  On Error Resume Next
  WorkSheetExists = Not ActiveWorkbook.Worksheets(strName) Is Nothing
End Function
____________________________________________________oOo______________________________________________________
(13/06/2019, 13:33)nightashes yazdı: 3- Listboxların üstüne textbox koydum ki istediğim zaman aratma yapabileyim ama bunuda aktif bir hale getiremedim. Acaba text.box a göre arama yı nasıl sağlayabilirim.
Private Sub TextBox1_Change()

Dim sayfa As Worksheet
Dim syfAdi, txtArama As String

ListBox1.Clear
ListBox1.ColumnCount = 1
ListBox1.ColumnWidths = "50"
For Each sayfa In Worksheets
   syfAdi = sayfa.Name
   txtArama = Me.TextBox1.Text
   If InStr(1, syfAdi, txtArama, 1) > 0 Then ListBox1.AddItem sayfa.Name
Next
End Sub

Private Sub TextBox2_Change()

Dim bolge As Range
Dim SonSatir As Long
   SonSatir = Worksheets("Liste-Maliyet").Cells(4, 3).End(xlDown).Row + 4
Dim iCount As Long
'Boşsa______________________________
If Len(Me.TextBox2.Text) = 0 Then
   ListBox2.List = Worksheets("Liste-Maliyet").Range("B4:C" & SonSatir).Value
   Exit Sub
End If
'Boşsa______________________________bitti

Set bolge = Worksheets("Liste-Maliyet").Range("B4:C" & SonSatir)
iCount = 0
ListBox2.Clear
   With bolge
   Dim C As Range
   Set C = .Find(TextBox2.Text, LookIn:=xlValues)
   If Not C Is Nothing Then
       Dim FirstAddress As String, Rslt As String
       FirstAddress = C.Address
       Do
           ListBox2.AddItem
           ListBox2.List(iCount, 0) = Worksheets("Liste-Maliyet").Range("B" & C.Row)
           ListBox2.List(iCount, 1) = Worksheets("Liste-Maliyet").Range("C" & C.Row)
           iCount = iCount + 1
           Set C = .FindNext©
       Loop While C.Address <> FirstAddress
       End If
       End With

End Sub
____________________________________________________oOo______________________________________________________
4. sorunuzun yanıtını henüz bulamadım
dilerim işinize yarar

Bu harika cevaplar için teşekkür ederim. Her bir kod dediğiniz gibi işe yaramakta. Ve tam istediğim gibi oldu. Çok teşekkürler.
Bir tek dördüncü soru kaldı. Buda işin süsü zaten. Diğer kısımlar işin önemli tarafları idi ve sayenizde hallettim. Tekrar tekrar çok teşekkürler.
Alıntı:Her şey bir fikirle başlar.
Cevapla
#12
ÖD
iyi çalışmalar
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task