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:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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
 
Katılım
24 Haziran 2011
Mesajlar
599
Excel Vers. ve Dili
EXCEL 2010 & ACCESS 2007 ENGLISH
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.
 
Katılım
5 Şubat 2015
Mesajlar
4
Excel Vers. ve Dili
2007 ve 2013, türkçe ve ingilizce
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?
 
Katılım
22 Aralık 2012
Mesajlar
6
Excel Vers. ve Dili
2007 Türkçe
2010 Türkçe
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.
 
Katılım
31 Mayıs 2015
Mesajlar
15
Excel Vers. ve Dili
2007
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

Katılım
15 Eylül 2010
Mesajlar
14
Excel Vers. ve Dili
Excel 2010 Türkçe
Excel 2013 Türkçe - İngilizce
Excel 2016 Türkçe - İngilizce
Altın Üyelik Bitiş Tarihi
02/10/2018
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerilen kod zaten butona tıklayınca arama işlemi yapıyor.
 
Katılım
15 Eylül 2010
Mesajlar
14
Excel Vers. ve Dili
Excel 2010 Türkçe
Excel 2013 Türkçe - İngilizce
Excel 2016 Türkçe - İngilizce
Altın Üyelik Bitiş Tarihi
02/10/2018
Ö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?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
15 Eylül 2010
Mesajlar
14
Excel Vers. ve Dili
Excel 2010 Türkçe
Excel 2013 Türkçe - İngilizce
Excel 2016 Türkçe - İngilizce
Altın Üyelik Bitiş Tarihi
02/10/2018
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.
 
Katılım
1 Kasım 2017
Mesajlar
118
Excel Vers. ve Dili
excel 2016 İngilizce
Altın Üyelik Bitiş Tarihi
02/11/2022
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
 

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
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
 
Katılım
25 Ağustos 2018
Mesajlar
64
Excel Vers. ve Dili
Excel 2016, Türkçe.
Altın Üyelik Bitiş Tarihi
16-04-2021
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.
 
Üst