• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Düşeyara VBA hatası

Katılım
22 Mayıs 2009
Mesajlar
1,017
Excel Vers. ve Dili
Office 2003
Private Sub Worksheet_Change(ByVal Target As Range)
Set S1 = Sheets("Tüm")
If Intersect(Target, [C:C]) Is Nothing Then Exit Sub
If Target.Value = "" Then Exit Sub
Target.Offset(0, 1) = WorksheetFunction.VLookup(Target, S1.[C:G], 3, 0)
Target.Offset(0, 2) = WorksheetFunction.VLookup(Target, S1.[C:G], 4, 0)
Target.Offset(0, 3) = WorksheetFunction.VLookup(Target, S1.[C:G], 5, 0)

End Sub


Üstadım yukarıdaki işlemde yanlışım nerede yardımcı olabilir misiniz?

Hata Kodu ise :WorksheetFunction sınıfının VLookup özelliği alınamıyor
 
Merhaba,

Aranan değeri bulamadığı durumlarda hata alıyorsunuzdur. Aşağıdaki gibi düzenleme yapılabilir.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    Dim S1 As Worksheet
    Dim Wf
 
    Set S1 = Sheets("Tüm")
    Set Wf = WorksheetFunction
 
    If Intersect(Target, [C:C]) Is Nothing Then Exit Sub
 
    With Target
        If .Value = "" Then Exit Sub
        If Wf.CountIf(S1.[C:C], .Value) > 0 Then
            .Offset(0, 1) = Wf.VLookup(.Value, S1.[C:G], 3, 0)
            .Offset(0, 2) = Wf.VLookup(.Value, S1.[C:G], 4, 0)
            .Offset(0, 3) = Wf.VLookup(.Value, S1.[C:G], 5, 0)
        Else
            MsgBox "Veriyi Bulamadım"
            Exit Sub
        End If
    End With
 
End Sub

Not: Benim tavsiyem, düşeyara yerine find komutunu kullanmanızdır.
 
Ömer abi İşlem Tamam Teşekkür ederim.
Ama rica etsem
Tavsiyenizi örnek olarak ekleyebilir misiniz?
Düşeyarayı kullanmam şart değil. Ekleyebilir misiniz Find Örneğini
 
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    Dim S1 As Worksheet, c As Range
 
    Set S1 = Sheets("Tüm")
 
    If Intersect(Target, [C:C]) Is Nothing Then Exit Sub
 
    With Target
        Set c = S1.[C:C].Find(.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            .Offset(0, 1) = S1.Range("E" & c.Row)
            .Offset(0, 2) = S1.Range("F" & c.Row)
            .Offset(0, 3) = S1.Range("G" & c.Row)
        Else
            Range("D" & .Row & ":F" & .Row).ClearContents
            MsgBox "Veriyi Bulamadım"
        End If
    End With
 
End Sub
Gibi..

.
 
Ömer Abi Find örneğini kullandım

Ellerine sağlık. Yardımcı olduğunuz için de teşekkür ederim Abi
 
Ömer abi yukarıda yer alan işlemde c sütununa yazdığım ada karşılık diğer değerler getirildi.
Yalnız şöyle bir sıkıntı var. İsmi sildiğim zaman diğer veriler duruyor.
A kişisini sildiğim zaman a kişisi ile gelen diğer verilerde silinebilir mi?
 
#4 numaraları mesajı düzenledim. Tekrar denermisiniz...
 
Ömer abi Teşekkür ederim

Zahmet verdim ise Hakkını Helal et.
 
Geri
Üst