• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Bul işleminde sorun

Katılım
11 Mayıs 2005
Mesajlar
104
Merhaba,
Kod:
Private Sub ComboBox1_Change()
On Error Resume Next
Dim bul As Range
Sheets("Sayfa1").Select
For Each bul In Range("A2:A" & WorksheetFunction.CountA(Range("A2:A500")))
If StrConv(bul.Value, vbUpperCase) = StrConv(ComboBox1.Value, vbUpperCase) Then
bul.Select
End If
Next bul
End Sub
Yukarıdaki kodlarla A sütununda ardığım değeri bulmaya çalışıyorum. Ancak kodlar, A sütunundaki değerlerin son satırındaki değeri bulmuyor.
Ã?rneğin A sütununda 18 satır varsa, 17. satıra kadar buluyor. Son değeri bulamıyor. Neden olabilir?
Selamlar
 
Sevgili nziya,
ilgilendiğiniz için teşekkür ederim. Kodlarınız çalışmadı ama bir fikir verdi. Sağolun

Kod:
Private Sub ComboBox1_Change()
On Error Resume Next
Dim bul As Range
Dim sonsat As Integer
sonsat = Sheets("Sayfa1").Cells(65536, 1).End(xlUp).Row

Sheets("Sayfa1").Select
For Each bul In Range("A2:A" & sonsat)
If StrConv(bul.Value, vbUpperCase) = StrConv(ComboBox1.Value, vbUpperCase) Then
bul.Select
End If
Next bul
End Sub
 
yanıt

nasıl olur bende bulunuyor istediğiniz verinin baş harfini girmeniz yeterli.
 
Dosyanızdaki User formdaki Combobox1'in Properties'ne girip RowSource'nu örneğin A1:A500 yapın. (Sizinkinde sayfa2!A1:A20 şeklindedir. Verileri hangi sayfadan alınacağına da dikkat edin.)
 
Sayın nziya,
Ben problemi yanlış veya eksik anlatmış olabilirim.
İstediğim şey, Combobox1 deki değeri seçince, sayfa 1 de comboboxla aynı değeri taşıyan hücrenin aktif hale gelmesi idi.
Yani: Comboboxta "çarşamba" değerini seçtiğim zaman, sayfa1 de A sütununda yazılı olan "çarşamba" yazısının bulunması...

Sayın yurttaş,
Combobox1'e veriyi Ã?zellikler bölümünden değil de kod yazarak almak zorundayım. Çünkü başka combolarla ilişkisi var.

Zaten sorunu nziya arkadaşımın ilhamıyla halletik. Sağolun
Saygılarımla
 
Aşağıdaki şekilde deneyin.

[vb:1:da6cd8a939]Private Sub ComboBox1_Change()
sat = ComboBox1.ListIndex + 1
Cells(sat, "a").Select
End Sub
[/vb:1:da6cd8a939]
 
Selamlar,
Sayın Leventm'in verdiği kod gayet iyi çalışmakla birlikte, aranan sütununda yoksa hata veriyor.
Hata yerine aranan kelime yok mesajı verecek şekilre düzenlenmesi mümkün müdür.
 
Sayın Leventm'in verdiği kod gayet iyi çalışmakla birlikte, aranan sütununda yoksa hata veriyor.
Hata yerine aranan kelime yok mesajı verecek şekilre düzenlenmesi mümkün müdür.
Bu dediğiniz ancak comboboxa klavyeden veri girerseniz gerçekleşir. Combobox bir açılan kutu olduğundan klavyeden veri girilmesi bence çok mantıklı değil, bunun yerine textbox kullanılabilir. Ama ısrar ederseniz kodu aşağıdaki gibi değiştirin.

[vb:1:2ebd22e3fd]Private Sub ComboBox1_Change()
on error goto 10
sat = ComboBox1.ListIndex + 1
Cells(sat, "a").Select
exit sub
10 msgbox "aranan veri bulunamadı"
End Sub
[/vb:1:2ebd22e3fd]
 
Evet, çok haklısınız. Klavye ile giriş yapıldığında hata vermekte idi. Bu son kod çok iyi. Eline sağlık
 
Yukarıdaki kodlarla A sütununda ardığım değeri bulmaya çalışıyorum. Ancak kodlar, A sütunundaki değerlerin son satırındaki değeri bulmuyor.
Ã?rneğin A sütununda 18 satır varsa, 17. satıra kadar buluyor. Son değeri bulamıyor. Neden olabilir?
Sorunuz bu olunca ve dosyanızdaki Combobox1'in Properties'indeki RowSource'u sayfa2!A1:A20 şeklinde olunca öyle cevap verdim. Problem çözüldüğüne göre mesele yok.
 
Belki biraz kafaları karıştıracağım ama,
leventm arkadşımızın kodları, kaynağını aynı sütundan alıyorsa doğru çalışıyor.
Ekteki dosyada, Combo nun Rowsource unu 2. sayfadan alırsak kodların çalıştığını ancak istediğimiz hücreyi seçmediğini görürüz.
 
Böyle bir şey deneseniz ...

sheets("sayfa2").Cells(sat, "a").Select
 
Sevgili haluk,
Sorun aslında çözümlendi. Ama biz fikir jimnastiği, yenilerin deyimiyle beyin fırtınası yapıyoruz. Fena da olmuyor hani. :D

NOT:kodlar "Range sınıfının Select yöntemi başarısız" hatası verdi.
 
ehem, ehum .... dediğim gibi olmuyor galiba ama, şöyle bir şey çalışır ...

Kod:
Private Sub ComboBox1_Change()
    sat = ComboBox1.ListIndex + 1
    Sheets("Sayfa2").Select
    Range("a" & sat).Select
End Sub
 
Haluk Kardeş,

Benim anlatma özürlü oluşumdan dolayı, nice koçyiğitler bul uğruna heba oluyor...

Kod:
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sayfa2!A1:A20"
End Sub

Kod:
Private Sub ComboBox1_Change()
    sat = ComboBox1.ListIndex + 1
    Sheets("Sayfa2").Select
    Range("a" & sat).Select
End Sub

combonun bulması gereken değer 1. sayfada. Veriler 2. sayfada
İyice karıştırdım galiba :(
 
Kod:
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sayfa2!A1:A20"
End Sub
Kod:
  Private Sub ComboBox1_Change()
On Error Resume Next
Dim bul As Range
Dim sonsat As Integer
sonsat = Sheets("Sayfa1").Cells(65536, 1).End(xlUp).Row
Sheets("Sayfa1").Select
For Each bul In Range("A1:A" & sonsat)
If StrConv(bul.Value, vbUpperCase) = StrConv(ComboBox1.Value, vbUpperCase) Then
bul.Select
End If
Next bul
End Sub
biraz uzun ama iyi çalışıyor.
NOT:Arkadaşlar, beni gaza getirdiniz. Sizlerden öğrendiğimi sizlere satmaya çalıştırdınız. Alacağınız olsun.
 
Madem beyin fırtınası yapıyoruz o zaman birde aşağıdakileri deneyin. :D

[vb:1:96d86bb7df]Private Sub ComboBox1_Change()
On Error Resume Next
sat = WorksheetFunction.Match(ComboBox1.Value, [a1:a65536], 0)
Cells(sat, "a").Select
End Sub
[/vb:1:96d86bb7df]

yada

[vb:1:96d86bb7df]Private Sub ComboBox1_Change()
On Error Resume Next
sat = [a1:a65536].find(combobox1.value).row
Cells(sat, "a").Select
End Sub
[/vb:1:96d86bb7df]
 
Sayın leventm,
Kodları denedim. Gayet güzel çalışıyor.
Demek ki:
"Doğru bir tanedir. Ama doğruya giden yollar birden fazla olabilir."

Saygılarımla
 
Geri
Üst