kinikemrah
Altın Üye
- Katılım
- 24 Nisan 2011
- Mesajlar
- 43
- Excel Vers. ve Dili
- EXCEL 2013 Türkçe
- Altın Üyelik Bitiş Tarihi
- 5-11-2025
Ekli dosyayı görüntüle 170452Merhaba,
bir çok forumda dolaşarak ekteki excel çalışmasını oluşturdum.
bir çok noktada takıldım belki sizler için çok kısa sürecek sorunları saatlerce uğraşarak bu hale getirdim.
Öncelikle adım adım sıkıntılarımdan bahsedeyim.
Combobox daki herhangi bir değere göre listbox'ı süzmek istiyorum. aslında kısmi olarak yaptım daha önce yapılanlardan örnek alarak kendime uyarladım ama bu sefer 13 hücreli listboxtan sadece 4 hücresi görünüyor ve nasıl hepsinin görünmesini sağlayacğımı bilemiyorum. ayrıca comboboxa veri giriş yapıp sildiğimde hata kodu alıyorum. ama sıralama kodları nasıl yazılıyor mantığını anlayamadığım için tıkandım.
kodlar şöyle
Private Sub ComboBox1_Change()
'On Error Resume Next
Dim k As Range, a As Long, j As Integer, ilk_adres As String
ListBox1.RowSource = vbNullString
ReDim myarr(1 To 4, 1 To 1)
Set k = Range("B2:B65536").Find("*" & ComboBox1.Text & "*", , xlValues, xlWhole)
If Not k Is Nothing Then
ilk_adres = k.Address
Do
a = a + 1
ReDim Preserve myarr(1 To 4, 1 To a)
For j = -1 To 1
myarr(j + 2, a) = k.Offset(0, j).Value
Next j
myarr(4, a) = k.Row
Set k = Range("B2:B65536").FindNext(k)
Loop While k.Address <> ilk_adres And Not k Is Nothing
ListBox1.Column = myarr
liste = ListBox1.List
ListBox1.List = sirala(liste)
End If
End Sub
Function sirala(liste)
Dim i As Long, j As Long, x As Variant, k As Byte
For i = 0 To UBound(liste) - 1
For j = i + 1 To UBound(liste)
If liste(i, 0) > liste(j, 0) Then
For k = 0 To 3
x = liste(i, k)
liste(i, k) = liste(j, k)
liste(j, k) = x
Next k
End If
Next j
Next i
sirala = liste
End Function
ayrıca bu sıralamayı yaptım yapalı yavaşlığın nedenini bulamadım userform geç açılmaya başladı.
Formülü sadece şimdilik arackayit userformdaki combobox1 e uyguladım düzgün çalışsa diğerlerine ben uygulayabilirim.
Yardımlarınız için şimdiden teşekkürler.
Emrah K.
bir çok forumda dolaşarak ekteki excel çalışmasını oluşturdum.
bir çok noktada takıldım belki sizler için çok kısa sürecek sorunları saatlerce uğraşarak bu hale getirdim.
Öncelikle adım adım sıkıntılarımdan bahsedeyim.
Combobox daki herhangi bir değere göre listbox'ı süzmek istiyorum. aslında kısmi olarak yaptım daha önce yapılanlardan örnek alarak kendime uyarladım ama bu sefer 13 hücreli listboxtan sadece 4 hücresi görünüyor ve nasıl hepsinin görünmesini sağlayacğımı bilemiyorum. ayrıca comboboxa veri giriş yapıp sildiğimde hata kodu alıyorum. ama sıralama kodları nasıl yazılıyor mantığını anlayamadığım için tıkandım.
kodlar şöyle
Private Sub ComboBox1_Change()
'On Error Resume Next
Dim k As Range, a As Long, j As Integer, ilk_adres As String
ListBox1.RowSource = vbNullString
ReDim myarr(1 To 4, 1 To 1)
Set k = Range("B2:B65536").Find("*" & ComboBox1.Text & "*", , xlValues, xlWhole)
If Not k Is Nothing Then
ilk_adres = k.Address
Do
a = a + 1
ReDim Preserve myarr(1 To 4, 1 To a)
For j = -1 To 1
myarr(j + 2, a) = k.Offset(0, j).Value
Next j
myarr(4, a) = k.Row
Set k = Range("B2:B65536").FindNext(k)
Loop While k.Address <> ilk_adres And Not k Is Nothing
ListBox1.Column = myarr
liste = ListBox1.List
ListBox1.List = sirala(liste)
End If
End Sub
Function sirala(liste)
Dim i As Long, j As Long, x As Variant, k As Byte
For i = 0 To UBound(liste) - 1
For j = i + 1 To UBound(liste)
If liste(i, 0) > liste(j, 0) Then
For k = 0 To 3
x = liste(i, k)
liste(i, k) = liste(j, k)
liste(j, k) = x
Next k
End If
Next j
Next i
sirala = liste
End Function
ayrıca bu sıralamayı yaptım yapalı yavaşlığın nedenini bulamadım userform geç açılmaya başladı.
Formülü sadece şimdilik arackayit userformdaki combobox1 e uyguladım düzgün çalışsa diğerlerine ben uygulayabilirim.
Yardımlarınız için şimdiden teşekkürler.
Emrah K.
Ekli dosyalar
-
1.6 MB Görüntüleme: 22
Son düzenleme: