Excel Veri Doğrulama ile seçilen veriye göre koşul ?

Katılım
21 Mart 2022
Mesajlar
6
Excel Vers. ve Dili
EXCELL 2010
Merhaba arkadaşlar, kurumum için hazırladığım bir tabloda veri doğrulama listelerim var. Bunları bir nevi combobox olarak kullanıyorum. Şöyle bir sıkıntım var; listeden "işlem yapıldı" seçeneğini seçtiğim zaman farklı bir sütunda tarih atmam gerekiyor. Bunu, eğer ile yaptığım zaman fonksiyonu her excele girişimde çalıştırdığı için, ilgili hücrede "işlem yapıldı" yazısını gördüğü için her gün tarihi excelin açıldığı tarih olarak değiştiriyor. C# ve basic kullanırken bu tarz işleri combobox'un selectindex eventi içine yazdığımda sorun olmuyordu. Yani diğer bir değişle, veri doğrulama listesinde seçim yaptığımda bu koşulu araması gerekiyor. Fakat VBA konusunda acemi olduğum için işin içinden çıkamıyorum. Dosya Kamu kurumuna haiz bir dosya olduğu ve aboneliğim yeni olduğu için dosya gönderemiyorum. VBA macro ile ya da macrosuz bu konuda nasıl bir çözüm bulabilirim. Yardımlarınızı bekliyorum ?
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
427
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

En azından alakasız veriler ile bir örnek dosya oluşturamaz mısınız?
 
Katılım
21 Mart 2022
Mesajlar
6
Excel Vers. ve Dili
EXCELL 2010
Merhaba,

En azından alakasız veriler ile bir örnek dosya oluşturamaz mısınız?
Hocam üyeliğim yok ve maalesef yükleyemedim ama şöyle bi tablo yapıp fotoğrafını paylaşıyorum. Olay şu b sütunundaki tablodan yapıldı verisini seçtiğim zaman c ye aynı günün tarihini atayacak. Fakat bunu sadece seçimin yapıldığı gün yapacak.
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
427
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Aşağıdaki kodu sayfanın kod bölümüne yapıştırıp dener misiniz?

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Target.Value = "Yapıldı" Then Cells(Target.Row, 3) = Date
End Sub
 
Katılım
21 Mart 2022
Mesajlar
6
Excel Vers. ve Dili
EXCELL 2010
Merhaba,

Aşağıdaki kodu sayfanın kod bölümüne yapıştırıp dener misiniz?

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Target.Value = "Yapıldı" Then Cells(Target.Row, 3) = Date
End Sub
Hocam çok özür dilerim biraz önce çalışmadığını söylemiştim. Ama şuanda işime yaradı çok teşekkür ederim. Çok özür diliyerek öğrenmek adına kodun mantığını paylaşma şansınız var mı? Veri sınırlaması yok değil mi 50000 hücreye de yazsam yine çalışacak ve otomatik veri düşecek sanırım.
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
427
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Tabii ki, satır numarası fark etmez, çalışmaya devam edecektir. Açıklamasını aşağıya bırakıyorum.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub 'Değişen hücrenin 2. sütunda (Target.column) olup olmadığına bakıyor. Yani sadece 2. sütunda değişiklik olması durumunda çalışacak, yoksa çalıştırmayacak (Exit Sub).
If Target.Value = "Yapıldı" Then Cells(Target.Row, 3) = Date 'Burada değişen hücrenin değerini (Target.value) kontrol ediyor ve değişen hücrenin satırında (Target.row) ve 3. sütunda bulunan alana bugünün tarihini (Date) yazıyor
End Sub
 
Katılım
21 Mart 2022
Mesajlar
6
Excel Vers. ve Dili
EXCELL 2010
Tabii ki, satır numarası fark etmez, çalışmaya devam edecektir. Açıklamasını aşağıya bırakıyorum.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub 'Değişen hücrenin 2. sütunda (Target.column) olup olmadığına bakıyor. Yani sadece 2. sütunda değişiklik olması durumunda çalışacak, yoksa çalıştırmayacak (Exit Sub).
If Target.Value = "Yapıldı" Then Cells(Target.Row, 3) = Date 'Burada değişen hücrenin değerini (Target.value) kontrol ediyor ve değişen hücrenin satırında (Target.row) ve 3. sütunda bulunan alana bugünün tarihini (Date) yazıyor
End Sub
Çok teşekkür ederim syntax farkından dolayı algılayamadığım için sizlere rahatsızlık verdim. Hakkınızı helal edin. Ben de bir elseif ekleyerek farklı bir koşul ile beraber kullanacağım. Bu arada bu değişklikten sonra if'i bitirmemi istedi program sizinkinde hata vermemişti ama anlamadım :) çok teşekkür ederim kalın sağlıcakla
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
427
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Ne demek iyi dilekleriniz için ben teşekkür ederim. If blokunda eğer aynı satırda Then işlevinden sonra ne yapmasını istediğinizi yazarsanız bloğu kapatmanızı istemez. O kod tek satırlık bir kod halini alır. Fakat Then'den sonra aşağıdaki satırdan devam ederseniz bloku kapatmanız gerekecektir. Kolay gelsin
 
Üst