VBA İLE DÜŞEYARA SÜREKLİ AKTİF OLSUN

Katılım
2 Temmuz 2020
Mesajlar
19
Excel Vers. ve Dili
Excel 2019
Arkadaşlar merhaba,


Bu videoda hocamız VBA ile Düşeyara fonksiyonunu nasıl yapacağımız anlatıyor. Fakat VBA ile yazılan kod, formül ile yazımdan artı olarak bir de GETİR şeklinde bir butona muhtaç. (16:20 dk da görebilirsiniz) Fakat benim istediğim bu buton olmadan VBA kodumuz sürekli aktif olsun. Yani bir GETİR tuşuna basmayalım. Sol sütundan seçimi yaptığımızda sağ sütun DÜŞEYARA'da olduğu gibi direkt olarak gelsin. VBA ile yaptığımızda bu mümkün müdür? Teşekkürler.
 
Son düzenleme:

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
552
Excel Vers. ve Dili
Office365 TR
Merhaba,
Böyle bir örnek için B2 hücresine formül yazmak daha basit bir çözüm olacaktır, makro ile çözüm uzatılmış olur.
Eğer(a2<>"";düşeyara(....);"") gibi bir formül.
A sütununda birden çok satıra isim yazarak yanına veri getirmek istiyorsanız o başka bir konu.
 
Katılım
2 Temmuz 2020
Mesajlar
19
Excel Vers. ve Dili
Excel 2019
Merhaba,
Böyle bir örnek için B2 hücresine formül yazmak daha basit bir çözüm olacaktır, makro ile çözüm uzatılmış olur.
Eğer(a2<>"";düşeyara(....);"") gibi bir formül.
A sütununda birden çok satıra isim yazarak yanına veri getirmek istiyorsanız o başka bir konu.

Bu formül ile neyi ifade ettiğinizi tam anlayamadım? Benim sorum basit aslında. VBA ile düşeyarama işlemi "GETİR" şeklinde bir butona muhtaç mıdır?
 
Katılım
2 Temmuz 2020
Mesajlar
19
Excel Vers. ve Dili
Excel 2019
Hayır değildir.
Örnek çalışmayı indirip, bakabilirsiniz
Sayfa1 de A2 hücresindeki veriyi değiştirerek, B2 deki verinin değiştiğini görebilirsiniz.
Harika! Bahsettiğim şey tam olarak buydu. Excel'de yeniyim, basit sorular soruyor olabilirim. İlgilendiğiniz için çok teşekkürler!
 

Volkan1107

Altın Üye
Katılım
15 Ağustos 2011
Mesajlar
17
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
04-05-2025
Hayır değildir.
Örnek çalışmayı indirip, bakabilirsiniz
Sayfa1 de A2 hücresindeki veriyi değiştirerek, B2 deki verinin değiştiğini görebilirsiniz.
Merhaba örnek çok güzel emeğinize sağlık

Çalışmadaki örnekte yer alan, adı ve soyadı hücresindeki değerleri altındaki 3,4,5,6.... satırlara da yapılabilir mi acaba?
 

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
552
Excel Vers. ve Dili
Office365 TR
Yukarıdaki çalışmadaki Sayfa1 in kod bölümüne aşağıdaki kodu yazarsanız. A2:A10 hücre aralığına veri girişi yapıldığında yanındaki hücreye, Liste sayfasında arama yapar ve eğer varsya 2. sütündaki değeri getir, eğer yoksa boş bırakır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    Dim KeyCells    As Range
   
    Set KeyCells = Range("A2:A10")
   
   If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        If Target.Value = "" Then
        Target.Offset(0, 1) = ""
        Exit Sub
    Else
        Target.Offset(0, 1) = Application.WorksheetFunction.VLookup(Target.Value, Worksheets("Liste").Range("A1").CurrentRegion, 2, 0)
        Exit Sub
    End If
End If
End Sub
 

Volkan1107

Altın Üye
Katılım
15 Ağustos 2011
Mesajlar
17
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
04-05-2025
Yukarıdaki çalışmadaki Sayfa1 in kod bölümüne aşağıdaki kodu yazarsanız. A2:A10 hücre aralığına veri girişi yapıldığında yanındaki hücreye, Liste sayfasında arama yapar ve eğer varsya 2. sütündaki değeri getir, eğer yoksa boş bırakır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    Dim KeyCells    As Range
  
    Set KeyCells = Range("A2:A10")
  
   If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        If Target.Value = "" Then
        Target.Offset(0, 1) = ""
        Exit Sub
    Else
        Target.Offset(0, 1) = Application.WorksheetFunction.VLookup(Target.Value, Worksheets("Liste").Range("A1").CurrentRegion, 2, 0)
        Exit Sub
    End If
End If
End Sub
Çok teşekkürler. Çok faydalı olduğu emeğinize sağlık.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,419
Excel Vers. ve Dili
excel 2010
Merhaba

Yerleşik fonksiyon varken butür kodları kullanmanızı önermem.
Hele de vba konusunda acemi birisi bunu kullanmamalı.
Örneğin, dosyayı açan kişi makroyu etkinleştirmemiş olabilir. Siz kod çalıştı doğru sonuç geldi sanırınız, hata yaparsınız.
Mesela bey çoğunlukla A sütununu boş bırakırım, tablonun soluna hakim olmak için.
Biri bu alışkanlıkla sütun ekler, sizin kodlar hata verir, neler olduğunu da çözemeyebilirsiniz.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,233
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Hocanız VBA'da WorkSheetFunction konusunu işlediği için olay basit gibi olabilir. Madem vba da acemi iseniz farklı yöntemi aşağıdaki kodları Muratboz06 arkadaşımızın dosyasında A sütununda herhangi bir hücrede uygulayabilirsiniz.

DÜŞEYARA değil WBA nın Find komutu kullanılmıştır.


Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [A:A]) Is Nothing Or Target.Row < 2 Then Exit Sub
    
    Dim c As Range
    
    Set c = Sayfa2.Range("A:A").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
        Cells(Target.Row, "B") = Sayfa2.Range("B" & c.Row)
'        Target.Offset(0, 1) = Sayfa2.Range("B" & c.Row)
    Else
        Cells(Target.Row, "B") = "Bulunamadı....."
'        Target.Offset(0, 1) = "Bulunamadı....."
    End If
    
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,552
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Hücreler kilitli olduğu zaman bu vba kodları çalışmıyor. Unprotect komutlarıyla şifre değeri girilerek yapılabiliyor diye biliyorum. Şifre değerini bilmeden bunu yapmanın yolu yok mu?
Sayfa koruması eklemeden önce hücrelerin kilidini kaldırırsanız olabilir. Bunun dışında sayfa koruma şifresini bilmeniz gerekir.
 

TUNCA ERSİN

Altın Üye
Katılım
18 Ağustos 2021
Mesajlar
129
Excel Vers. ve Dili
Office Professional plus 2016 Tr
Altın Üyelik Bitiş Tarihi
18-08-2026
sy. Hocalarım ;

kopyala yapıştır yapınca bir tane sonuç geliyor diğerleri gelmiyor ona nasıl bir çözüm olabilir teşekkür ederim.

Merhaba,

Hocanız VBA'da WorkSheetFunction konusunu işlediği için olay basit gibi olabilir. Madem vba da acemi iseniz farklı yöntemi aşağıdaki kodları Muratboz06 arkadaşımızın dosyasında A sütununda herhangi bir hücrede uygulayabilirsiniz.

DÜŞEYARA değil WBA nın Find komutu kullanılmıştır.


Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [A:A]) Is Nothing Or Target.Row < 2 Then Exit Sub
   
    Dim c As Range
   
    Set c = Sayfa2.Range("A:A").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
        Cells(Target.Row, "B") = Sayfa2.Range("B" & c.Row)
'        Target.Offset(0, 1) = Sayfa2.Range("B" & c.Row)
    Else
        Cells(Target.Row, "B") = "Bulunamadı....."
'        Target.Offset(0, 1) = "Bulunamadı....."
    End If
   
End Sub
 
Üst