Select Case - End Select metodu ile seçilen ComboBox veri aralığında arama yapmak.

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Herkese kolay gelsin. Ekte ki dosya çalışıyor. Sadece ComboBox1 de listelenmiş olan 16 öğeden hangisi seçili ise, öğenin başında yazılı olan dosya numaraları arasında ki tüm dosyaları listelemesi gerekiyor. ComboBox1 in ilk öğesi ile örnek verecek olursak, bu öğe de yazılı olduğu gibi (000-099 ~ GENEL KONULAR) 0-999 aralığında ki tüm dosyaların listelenmesi gerekmektedir. Bunun için de, aramanın, "dosyalar" çalışma sayfasının "A" kolonunda yapılması gerekmektedir.
Bunun için ComboBox1_Change olayına:
Kod:
select case combobox1.value
case "000-099 ~ GENEL KONULAR)"
aranan >= 0 and <=999
....
end select
şeklinde aranan değişkenin 0 a eşit yada büyük, 999 a eşit yada küçük bir değişken olarak tanımlamak, devamında da
Kod:
set k = worksheets("dosyalar").range("A2:A" & sonsatır).find(aranan)
gibi bir şey kurguladım, saatlerce de farklı şekillerde yazıp durdum, ama her seferinde hata verdi. tüm sitelerde saatler boyu cevabını aramama rağmen, hiç bir yerde benzer bir kurgulama ile bu konu üzerinde yapılmış bir açıklama bulamadım.
Yardımcı olursanız çok sevinirim, önceden teşekkürler, saygılarımla.
NOT: Dosyanın ne işe yaradığına dair açıklama:
Resmi kurum ve kuruluşlarda çalışanlar; yazışma yaptıkları zaman, konuyu ile alakalı dosya plan kodunu belirtmek zorundadırlar. Bunları akılda tutmak yada aramak da oldukça zordur. Bu yönde ki sıkıntıları azaltmak için düşünülmüş bir programdır. Kodlar ve dosya adları hatasızdır, veritabanı tamdır. Rahatlıkla kullanılabilir.
 

Ekli dosyalar

Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

Kod:
Private Sub ComboBox1_Change()
ListBox1.RowSource = ""
Select Case ComboBox1.ListIndex
Case 0: ilk = 2: son = 92
Case 1: ilk = 93: son = 158
Case 2: ilk = 159: son = 172
.
.
.
End Select
ListBox1.RowSource = "dosyalar!a" & ilk & ":e" & son
End Sub
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Aşağıdaki gibi deneyin.

Kod:
Private Sub ComboBox1_Change()
ListBox1.RowSource = ""
Select Case ComboBox1.ListIndex
Case 0: ilk = 2: son = 92
Case 1: ilk = 93: son = 158
Case 2: ilk = 159: son = 172
.
.
.
End Select
ListBox1.RowSource = "dosyalar!a" & ilk & ":e" & son
End Sub
Sayın leventm, sayenizde yeni iki şey öğrendim. Yürekten teşekkürler..
Birincisi, her duruma karşılık gelen iki değişken tanımı (bu aklıma hiç gelmemişti).
İkincisi, iki nokta üst üste :)) yöntemiyle yan yana değerlerin sıralanması.
bu yöntem sadece select case metodunda mı var, yoksa örnekleri de var mı, size daha fazla zahmet vermek istemem ama bu yöntemin başka hangi durumlarda kullanılabileceğini bilmek isterim.
Bu arada ilk mesajımda belirttiğim gibi kafama takılan soruya hala cevap arıyorum. Sorum şu:
Bir değişkene sabit bir değer değilde, sayısal, tarihsel vb. bir değer aralığı verebilir miyiz? Örneğin x değişkenine 9 dan büyük, 21 den küçüktür değerini nasıl yükleyebiliriz. Bunun vba ile yazım adabı nasıldır?
Tekrar teşekkürler üstadım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

İki nokta ":" işareti VBA editöründe alt alta yazdığınız satırları size yan yana yazma olanağı verir.

Basit bir örnek;

Kod:
Sub TEST_1()
    For X = 1 To 10
        Cells(X, 1) = X
        Cells(X, 2) = X
        Cells(X, 3) = X
        Cells(X, 4) = X
        Cells(X, 5) = X
    Next
End Sub
Kod:
Sub TEST_2()
    For X = 1 To 10: Cells(X, 1) = X: Cells(X, 2) = X: Cells(X, 3) = X: Cells(X, 4) = X: Cells(X, 5) = X: Next
End Sub
Bu iki kod bloğuda aynı işlemi yapmaktadır. Fakat ben alt alta yazılması taraftarıyım. Küçük birleştirmeler sorun çıkarmaz fakat uzun kodlar kafa karıştırır.

Diğer sorunuza gelince;

Dim X (1 To 9) gibi değişken atamaları yapabilirsiniz. Bu array yani dizi yöntemidir. Forumda bu konuyla ilgili örnekler var. Arama yaparak kullanım şekillerini öğrenebilirsiniz.

Ayrıca yine büyüklük ve küçüklük sorgulamasını IF bloklarıyla da yapabilirsiniz.

Kod:
If X >= 5 And X <= 15 Then
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Tekrar teşekkürler üstadım. İyi ki varsınız. Bu konu tamamdır. İnşallah yeni konularda görüşmek üzere. Allah'a emanet olun.
 
Üst