textbox1 deki değeri sayfada ara karşılığını textbox2

Katılım
21 Mayıs 2005
Mesajlar
90
Excel Vers. ve Dili
Excel 2007 Türkçe
Merhaba arkadaşlar,
bir user form üzerinde karşılıklı textboxlarım var. textbox1 (ürün adı yazıyor) textbox1 deki değer sürekli değişiyor. textbox2 (fiyat bilgisi). sayfa1 de b2:b500 aralığında ürün listem, c2:c500 aralığında da fiyat listem var. amacım textbox1 e gelen ürün adını sayfa1 b2:b500 aralığında aratıp textbox2 ye o ürünün fiyatını otomatik yazdırmak..
nasıl bir makro yazmam gerekir?
Teşekkürler..
 

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 kodu deneyin.

[vb:1:838b9b4412]Private Sub TextBox1_Change()
On Error Resume Next
TextBox2 = Cells([b2:b65536].Find(TextBox1.Value).Row, 3).Value
End Sub[/vb:1:838b9b4412]
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
İstediğiniz özelliği hangi alanda kullanacağınızı kestiremediğim için ve
Textboxların kullanım özelliğine biraz ters olduğunu düşünerek Listbox'da da yapılacağı gibi Combobox ile bir örnek hazırladım.Amacınıza cevap vereceğini tahmin ediyorum.

Ürün İsinleri B1 Hücresinden başlıyor.
Ürünlerin Fiyatları C1 Hücresinden.

UserForm1 üzerine 2 Adet TextBox,1 Adet ComboBox1 ilave ettikten sonra,ComboBox1'in RowSource özelliğine
Kod:
Sayfa1!B2:B500 'yazıyoruz.
ComboBox1'in kod sayfasına aşağıdaki kodu yazıyoruz..
Kod:
Private Sub ComboBox1_Change()
TextBox1 = Cells(ComboBox1.ListIndex + 1, 2)
TextBox2 = Cells(ComboBox1.ListIndex + 1, 3)
End Sub
Sağlıklı sonuç almanız için UserForm1'in Initialize kısmına

Kod:
Private Sub UserForm_Initialize()
Sheets("Sayfa1").Select
End Sub
 
Katılım
21 Mayıs 2005
Mesajlar
90
Excel Vers. ve Dili
Excel 2007 Türkçe
sevgili leventm,
yazdığınız kod için teşekkürler. ancak bu kod ihtiyacıma cevap vermedi.
TextBox2 = Cells([b2:b65536].Find(TextBox1.Value).Row, 3).Value
yukarıdaki kodda neden sayfa ismi yok? çünkü benim birden cok sayfada listem var. ilgili aratmayı sayfa1 de yapmamız lazım değil mi? Aşağıdaki gibi denedim ama beceremedim:)
On Error Resume Next
TextBox2 = ThisWorkbook.Worksheets("Sayfa1").Cells([b2:b65536].Find(TextBox1.Value).Row, 3).Value
 

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
yukarıdaki kodda neden sayfa ismi yok?
Eğer veriler ve yapılan işlemler, userformun üzerinde açıldığı sayfada ise sayfa ismi belirtmeye gerek yoktur.
çünkü benim birden cok sayfada listem var.
Bunu sorunuzda belirtmemişsiniz. Bu tür detayları belirtirseniz hem siz tam cevap almış olursunuz, hemde soruyu cevaplayan kişilerin birden fazla uğraşmasına engel olmuş olursunuz.

Aşağıdaki gibi deneyin.

[vb:1:68106b515f]Private Sub TextBox1_Change()
On Error Resume Next
TextBox2 = sheets("sayfa1").Cells(sheets("sayfa1").[b2:b65536].Find(TextBox1.Value).Row, 3).Value
End Sub [/vb:1:68106b515f]
 

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
Birde kodları birleştirerek yazmıştım. Daha anlaşılır olması için aşağıdaki gibide düzenlenebilir.

[vb:1:2dabdd7a57]Private Sub TextBox1_Change()
On Error Resume Next
satırno=sheets("sayfa1").[b2:b65536].Find(TextBox1.Value).Row
TextBox2 = sheets("sayfa1").Cells(satırno, 3).Value
End Sub [/vb:1:2dabdd7a57]
 
Katılım
21 Mayıs 2005
Mesajlar
90
Excel Vers. ve Dili
Excel 2007 Türkçe
Sayın leventm
sorun çözüldü sonsuz teşekkürler. uyarınızı dikkate alacağım kesinlikle yazdıklarınıza katılıyorum. ama bazı şeyleri daha yeni öğrenmeye başladığım için bu tür hatalar yapıyorum. bir sayfada açılan userforma kod yazarken sayfa adı vermeye gerek olmadığını inanın sayenizde yeni öğrendim. ancak elimden geldiği kadar bu konuda hassas olmaya çalışacağım.
teşekkür ederim..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selam arkadaşlar,

Bu konuyla ilgili bir çalışmam var yukarıdaki kodları uyguladım. Fakat istediğim sonuca ulaşamadım.

Sebebine gelince örneğin Z harfini yazdığımda bana eğer listede Z harfiyle başlayan ürün yoksa içinde Z harfi olan ürünün birim fiyatını getiriyor veya listede olmayan bir ürün yazdığımda eğer ürünün içinde listede bulunan bir ürünün harfleri mevcutsa onu getiriyor. Doğal olarak sonuç yanlış oluyor.

Mesela bunu şu şekilde düzeltemezmiyiz;

Textbox1 e girdiğim değerin tamamını arasın değeri bulursa karşılığını Textbox2 ye yazsın. Eğer Textbox1 e sayfada olmayan bir veri girilirse uyarı mesajı versin. (Ã?rnek dosya ektedir.)

İyi çalışmalar dilerim.
 
Üst