• DİKKAT

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

VBA - Textbox -Vlookup(Düşeyara)

Katılım
24 Haziran 2011
Mesajlar
599
Excel Vers. ve Dili
EXCEL 2010 & ACCESS 2007 ENGLISH
Arkadaşlar iyi çalışmalar;

Bir userform'um var. İki adet textbox, ve bir de commandbutton var.
Userform; Textbox1'e yazdığım değeri "colordata" sayfasında A1:B447 aralığında düşeyara fonksiyonu ile B sütununda buluyor.

Çalıştırmak istediğim fonksiyon şu şekilde:

=DÜŞEYARA( "Textbox1'de yazan değer",colordata!A1:B447,2,false)

Yazdığım veya arayıp bulduğum hiçbir kodu çalıştırmayı başaramadım ve artık pes ettim. :)


commandbutton'a yazmam gereken private sub prosedürünü bulmam gerekiyor.

Dosya ektedir.

Yardımlarınız için teşekkürler.
 

Ekli dosyalar

Son düzenleme:
Düşeyarayı boşverin.
vba komutu find kullanın.Daha esnektir.
Kod:
Private Sub CommandButton1_Click()
Dim k As Range, sat As Long
TextBox2.Text = ""
If TextBox1.Text = "" Then Exit Sub
With Sheets("colordata")
    sat = .Cells(Rows.Count, "A").End(xlUp).Row
    Set k = .Range("A1:A" & sat).Find(TextBox1.Text, , xlValues, xlWhole)
    If Not k Is Nothing Then
        TextBox2.Text = k.Offset(0, 1).Value
        Else
        MsgBox TextBox1.Text & " Bulunamadı!!", vbCritical, "B U L U N A M A D I"
    End If
End With
Set k = Nothing
End Sub
 
Hocam bu nasıl bir koddur. Kaç gündür yazdıklarımı denediklerimi görseniz heralde ağlardınız :)

Ellerinize sağlık; sağlıcakla kalın.
 
Hem düşeyara hem de yatayara bir kodda nasıl birleştirilir? En basit örnek olarak iller arası mesafeyi düşünelim. Hem yatayda hem de dikeyde bulunan verilerin kesişmesi benim sonucumu verecek. Bunu nasıl yazabiliriz?
 
düşeyara + yatayara

İndeks formüllerini denediniz mi?
Aynı şekilde illere göre hacim ve kargo fiyatlarını bu şekilde yapmıştım.
işinize yarayabilir.
 
Veri doğrulamarın birbirini çevirmesi ve süzmesi

merhaba

arkadaşlar ekteki teklif listemde veri doğrulamaları üst taraftaki comboboxlar gibi birbirini çevirmesini ve ürün ismi veya kodu yazdğımda filtrelenmesini istiyorum birde fiyatları stokları find fonksiyonu ile gelmesini istiyorum
düşeyara ile yaptığımda vba da yok hatasından dolayı hesaplama olmuyor
yardımcı olabilirmisiniz.
 

Ekli dosyalar

Düşeyarayı boşverin.
vba komutu find kullanın.Daha esnektir.
Kod:
Private Sub CommandButton1_Click()
Dim k As Range, sat As Long
TextBox2.Text = ""
If TextBox1.Text = "" Then Exit Sub
With Sheets("colordata")
    sat = .Cells(Rows.Count, "A").End(xlUp).Row
    Set k = .Range("A1:A" & sat).Find(TextBox1.Text, , xlValues, xlWhole)
    If Not k Is Nothing Then
        TextBox2.Text = k.Offset(0, 1).Value
        Else
        MsgBox TextBox1.Text & " Bulunamadı!!", vbCritical, "B U L U N A M A D I"
    End If
End With
Set k = Nothing
End Sub

Orion1 Merhaba,

Öncelikle emeğinize teşekkürler.

Benimde çok işime yaradı. Biraz daha geliştimemiz mümkün mü?

Aradğımız kriter ,

123 ise 1 yazdığımızda uyarı veriyor tamam deyip devam ettiğimizde 2 yazıyoruz 12 yi bulamadığından tekrar uyarı veriyor , bunada tamam dediğimizde 3 yazıyoruz 123 e denk gelen değer geliyor.

Burada aradığımız değer versa getirsin yok ise tab tuşuna veya enter tuşuna bastığımızda değer yok ise uyarı versin , aralarda bulamadığı derler için başka bir alana geçene kadar uyarı vermesin. Bu işlemi yaptırabilir miyiz.

Şimdiden Teşekkürler.
 
Önerilen kod zaten butona tıklayınca arama işlemi yapıyor.
 
Önerilen kod zaten butona tıklayınca arama işlemi yapıyor.

Korhan bey selamlar,

TextBox1 de çalıştırıyorum, değer yazınca TextBox2 bulduğu veriyi yazıyor.

Fakat,
Aranan değer , 123 ise 1 yazdığımızda uyarı veriyor tamam deyip devam ettiğimizde 2 yazıyoruz 12 yi bulamadığından tekrar uyarı veriyor , bunada tamam dediğimizde 3 yazıyoruz 123 e denk gelen değer geliyor.

Kodu siz denediniz mi?
 
Mesajınızdan anladığım kadarıyla siz arama kodunu nesnenin "Change" olayında kullanıyorsunuz.

Bu olayda her karakter yazımında nesne olayı tetiklenir. Kod arama kodu olduğu için ve kod içinde uyarı mesajı olduğu için aranan kayıt bulunamadığında otomatikman uyarı verir.

Fakat siz kodu nesnenin "Exit" olayına yazarsanız bu durumda aranan değerin yazımını tamamlayıp nesneyi terk ettiğinizde istediğiniz sonuca ulaşırsınız.

Yani sonucun istediğiniz gibi olması sizin kodu hangi olaya yazdığınızla ilgilidir.
 
Mesajınızdan anladığım kadarıyla siz arama kodunu nesnenin "Change" olayında kullanıyorsunuz.

Bu olayda her karakter yazımında nesne olayı tetiklenir. Kod arama kodu olduğu için ve kod içinde uyarı mesajı olduğu için aranan kayıt bulunamadığında otomatikman uyarı verir.

Fakat siz kodu nesnenin "Exit" olayına yazarsanız bu durumda aranan değerin yazımını tamamlayıp nesneyi terk ettiğinizde istediğiniz sonuca ulaşırsınız.

Yani sonucun istediğiniz gibi olması sizin kodu hangi olaya yazdığınızla ilgilidir.

Korhan bey selamlar,

Öncelikle verdiğiniz bilgiler için teşekkürler. Sizden ricam mümkünse Kodu dediğiniz şekilde derleyebilir misiniz.

Private Sub TextBox5_Change()
Dim k As Range, sat As Long
TextBox4.Text = ""
If TextBox5.Text = "" Then Exit Sub
With Sheets("KULLANICI")
sat = .Cells(Rows.Count, "A").End(xlUp).Row
Set k = .Range("A1:A" & sat).Find(TextBox5.Text, , xlValues, xlWhole)


If Not k Is Nothing Then

TextBox4.Text = k.Offset(0, 1).Value

Else

MsgBox TextBox5.Text & " Bulunamadı!!", vbCritical, "B U L U N A M A D I"

End If

End With
Set k = Nothing
End Sub

Teşekkürler.
 
Düşeyarayı boşverin.
vba komutu find kullanın.Daha esnektir.
Kod:
Private Sub CommandButton1_Click()
Dim k As Range, sat As Long
TextBox2.Text = ""
If TextBox1.Text = "" Then Exit Sub
With Sheets("colordata")
    sat = .Cells(Rows.Count, "A").End(xlUp).Row
    Set k = .Range("A1:A" & sat).Find(TextBox1.Text, , xlValues, xlWhole)
    If Not k Is Nothing Then
        TextBox2.Text = k.Offset(0, 1).Value
        Else
        MsgBox TextBox1.Text & " Bulunamadı!!", vbCritical, "B U L U N A M A D I"
    End If
End With
Set k = Nothing
End Sub


Bu olayı textbox ile de yapabilirmiyiz hiç buton kullanmadan yazdığımızda gelse
 
O dediğiniz, veriler listboxta alınıp oradan textbox ile arama yapılırsa daha güzel olur.
Diğer durumda düğme ile arama yapılacaksa;

Kod:
Private Sub CommandButton1_Click()
Dim Found As Range
Dim str As String
  
    str = Me.TextBox1.Text
    Set Found = colordata.Range("A1", Range("A" & Rows.Count).End(xlUp)).Find(str)
  
        If Found Is Nothing Then
          MsgBox ("BULUNAMADI!")
        Else
          MsgBox Cells(Found.Row, 1).Address & " hücresinde bulundu."
        End If
End Sub
 
Düşeyarayı boşverin.
vba komutu find kullanın.Daha esnektir.
Kod:
Private Sub CommandButton1_Click()
Dim k As Range, sat As Long
TextBox2.Text = ""
If TextBox1.Text = "" Then Exit Sub
With Sheets("colordata")
    sat = .Cells(Rows.Count, "A").End(xlUp).Row
    Set k = .Range("A1:A" & sat).Find(TextBox1.Text, , xlValues, xlWhole)
    If Not k Is Nothing Then
        TextBox2.Text = k.Offset(0, 1).Value
        Else
        MsgBox TextBox1.Text & " Bulunamadı!!", vbCritical, "B U L U N A M A D I"
    End If
End With
Set k = Nothing
End Sub

Hocam sa.
"Düşeyarayı boşverin.
vba komutu find kullanın.Daha esnektir."
Şu cümle bir programı kurtarmamı sağladı.
Size teşekkür etmek istiyorum.
 
Geri
Üst