Tarih bul ve göster

  • Konuyu başlatan Konuyu başlatan YAMAHATO
  • Başlangıç tarihi Başlangıç tarihi

Kısa Açıklama

Tarih bul ve göster isimli başlıkta, ilgili işlemlere dair detaylar yer almaktadır.
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba
Giren ürün isimli Excel sayfasında alınan ürünlerle ilgili bilgi var.
Alınan ürünü arama kutusuna parçanın ismini girdiğimde ListBox1 de o isimle başlayan parçalar çıkıyor.
ListBox1 de çıkan parça kodlarından istediğime tıklayınca , parça ile ilgili bilgiler geliyor.

Şimdi bütün bilgiler mesela en son yapılan alımla olusan en son alım fiyatı geliyor ama
en son yapılan alımın tarihi değil. o malın ilk alındığı ve sisteme işlendiği tarih geliyor.
Aşağıda ki kodda ne yanlış sizce

Giren ürün= veri sayfasının ismi
F hücresi= aradığım verinin GİREN ÜRÜN sayfasında ki yeri
A Hücresi= F hücresinde aradığım verinin alım tarihlerinin yazılı olduğu dikey sütun

' *************** Label33 EN SON ARANILAN DEĞERİN EN SON ALINDIĞI TARİHİ YAZDIRMA ***************


Set s1 = Sheets("GİREN ÜRÜN")
son = s1.Cells(Rows.Count, "F").End(3).Row
sat = WorksheetFunction.Match(ListBox1.Value, s1.Range("F1:F" & son), 0)
Label33 = s1.Cells(sat, "A")
 
Aynı konu/soru için 1'den fazla konu açmayınız,
sorularınızı örnek belge üzerinden sormaya özen gösteriniz.

İsteğinizin, aşağıdaki gibi gerçekleşmesi lazım.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(6 satır)

.
 
Match işlevi üstten alta doğru olmak üzere; aranan verinin, arama alanında KAÇINCI (ilk rastlantığı) sırada olduğunu bulur.
Sizin isteğiniz ise bunun tam tersi.
Bu nedenle alttan üste doğru döngü önerisinde bulinmuştum.
Tabi sizin belgenizdeki gibi bir userform üzerinde denemedim.
Zira; örnek belge eklememişsiniz.
Örnek belge olmayınca başka bir öneri olsa da yine sorun yaşamanız muhtemel.

.
 
Match işlevi üstten alta doğru olmak üzere; aranan verinin, arama alanında KAÇINCI (ilk rastlantığı) sırada olduğunu bulur.
Sizin isteğiniz ise bunun tam tersi.
Bu nedenle alttan üste doğru döngü önerisinde bulinmuştum.
Tabi sizin belgenizdeki gibi bir userform üzerinde denemedim.
Zira; örnek belge eklememişsiniz.
Örnek belge olmayınca başka bir öneri olsa da yine sorun yaşamanız muhtemel.

.
Şimdi ekledim sayın hocam
 
Ekli dosyalar
UserForm kodlarında yer alan, aşağıdaki kırmızı satırların yerine yeşil olanları ekleyin.
Önceki cevapta verdiğim kodda XD yerine, fark etmeden D'ye 2 kez dokunmuşum ve XDD yazmışım veya öyle denk gelmiş bilemiyorum.

Bir de tavsiyem olsun; örneğin ListBox1_Change kodunda Set s1 = ...... şeklinde çok sayıda kod satırı mevcut.
Muhtemelen işleyişte sorun yok ama, bu kodların en başında, herbir sayfa için,
o sayfanın adını hatırlatacak nitelikte ( ara, gu, cu, st, sah gibi) olmak üzere işlem yapılacak sayfalara ait
1'er satırlık Set .... satırı olursa kodlar daha anlaşılır olur.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(5 satır)

.
 
UserForm kodlarında yer alan, aşağıdaki kırmızı satırların yerine yeşil olanları ekleyin.
Önceki cevapta verdiğim kodda XD yerine, fark etmeden D'ye 2 kez dokunmuşum ve XDD yazmışım veya öyle denk gelmiş bilemiyorum.

Bir de tavsiyem olsun; örneğin ListBox1_Change kodunda Set s1 = ...... şeklinde çok sayıda kod satırı mevcut.
Muhtemelen işleyişte sorun yok ama, bu kodların en başında, herbir sayfa için,
o sayfanın adını hatırlatacak nitelikte ( ara, gu, cu, st, sah gibi) olmak üzere işlem yapılacak sayfalara ait
1'er satırlık Set .... satırı olursa kodlar daha anlaşılır olur.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(5 satır)

.Öncelikle teşekkür ederim. Sorunumu çözdünüz.
"o sayfanın adını hatırlatacak nitelikte ( ara, gu, cu, st, sah gibi) olmak üzere işlem yapılacak sayfalara ait
1'er satırlık Set .... satırı olursa kodlar daha anlaşılır olur." ufak bir örnek alabilirmiyim.
 
.Öncelikle teşekkür ederim. Sorunumu çözdünüz.
"o sayfanın adını hatırlatacak nitelikte ( ara, gu, cu, st, sah gibi) olmak üzere işlem yapılacak sayfalara ait
1'er satırlık Set .... satırı olursa kodlar daha anlaşılır olur." ufak bir örnek alabilirmiyim.

Sat = UserForm1.LbPlaka.ListIndex

UserForm1.TextBox505P = UserForm1.LbPlaka.List(Sat, 0)

UserForm1.TextBox630 = UserForm1.LbPlaka.List(Sat, 2)

UserForm1.TextBox631 = UserForm1.LbPlaka.List(Sat, 3)

UserForm1.TextBox632 = UserForm1.LbPlaka.List(Sat, 4)


Örnek olarak yukarıdaki kod satırlarını aşağıdaki gibi kısaltabilirsiniz.

Sat = UserForm1.LbPlaka.ListIndex

Set ufad = UserForm1

Ufad.TextBox505 = Ufad.LbPlaka.List(Sat, 0)

Ufad.TextBox630 = Ufad.LbPlaka.List(Sat, 2)

Ufad.TextBox631 = Ufad.LbPlaka.List(Sat, 3)

Ufad.TextBox632 = Ufad.LbPlaka.List(Sat, 4)
 
Benim fark ettiğim ListBox1_Change kod blokunda farklı sayfaları hep s1 adıyla tanımlıyorsunuz.
Örneğin STOK sayfasını Set st = Sheets("STOK"), SAHİBİNDEN sayfasını Set sh = Sheets("SAHİBİNDEN") gibi tanımlamanızda yarar var.

Benzer durum, herbir sayfa için hesaplanan "son" adını kullandığınız değişkenlerde de var.
Örneğin; STOK sayfası için st_son = st.Cells(Rows.Count, "B").End(3).Row ,
SAHİBİNDEN sayfası için sh_son = sh.Cells(Rows.Count, "A").End(3).Row
gibi kulanmanızda yarar var.

Bütün bunları neden yazdım: kodlarınızda On Error Resume Next gibi bir kod satırı varsa ve hatalı bir durum oluşursa bunu fark etmezsiniz, kod sayfa adı veya değişken adı olarak hatasız son değeri kullanır. Bu da istenilmeyen bir sayfanın istenilmeyen bir hücresinde işlem yapılması sonucunu doğurur.

.
 
Geri
Üst