private sub worksheet_change hakkında

bravo64

Altın Üye
Katılım
21 Eylül 2005
Mesajlar
184
Excel Vers. ve Dili
ofis 365 İngilizce
Altın Üyelik Bitiş Tarihi
25-10-2024
Merhaba tekrar sevgili arkadaşlar,
Private sub worksheet_change de yazdığım kod tabloya veri aktarıyor ve girilen değere göre vlookup ile yanındaki hücreye fiyatını getiriyor.Yalnız değer girildikten sonra worksheet_change in çalışması ve fiyatı getirmesi için enter yada tab yapmak gerekiyor..Bu tamam,acaba değer girildiği anda kod çalışamazmı?
 

bravo64

Altın Üye
Katılım
21 Eylül 2005
Mesajlar
184
Excel Vers. ve Dili
ofis 365 İngilizce
Altın Üyelik Bitiş Tarihi
25-10-2024
Tabloya değeri veri doğrulama ile giriyorum..
 

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
Yazar yazmaz maalesef çalıştıramazsınız, fakat veri doğrulama ile yapılmış bir açılır liste kullanıyorsanız, veriyi seçer seçmez kod çalışacaktır.
 

bravo64

Altın Üye
Katılım
21 Eylül 2005
Mesajlar
184
Excel Vers. ve Dili
ofis 365 İngilizce
Altın Üyelik Bitiş Tarihi
25-10-2024
sevgili leventm,veri doğrulama ile değer giriyorum ama hemen çalışmıyor.değer girildikten sonra herhangibir hücreyi click yaptığım zaman çalışıyor..
 

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
Ekteki örneği inceleyin.
 

bravo64

Altın Üye
Katılım
21 Eylül 2005
Mesajlar
184
Excel Vers. ve Dili
ofis 365 İngilizce
Altın Üyelik Bitiş Tarihi
25-10-2024
benim kodlarım şöyle,eğer bakabilirseniz sevinirim.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim düşey As Integer
On Error Resume Next
Set s1 = Sheets("tabela sa-1")
Set s2 = Sheets("stokraporu")
alan = s2.Range("b3:l500")
For düşey = 16 To 22
ara = s1.Cells(düşey, 1)
If s1.Cells(düşey, 1) <> "" And WorksheetFunction.VLookup(ara, alan, 5, 0) > 0 Then
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 4, 0)
Else
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 10, 0)
End If
If s1.Cells(düşey, 1) = "" Then s1.Cells(düşey, 7) = ""
Next
Set s1 = Sheets("tabela sa-1")
Set s2 = Sheets("stokraporu")
alan = s2.Range("b3:l500")
For düşey = 28 To 39
ara = s1.Cells(düşey, 1)
If s1.Cells(düşey, 1) <> "" And WorksheetFunction.VLookup(ara, alan, 5, 0) > 0 Then
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 4, 0)
Else
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 10, 0)
End If
If s1.Cells(düşey, 1) = "" Then s1.Cells(düşey, 7) = ""
Next
Set s1 = Sheets("tabela sa-1")
Set s2 = Sheets("stokraporu")
alan = s2.Range("b3:l500")
For düşey = 46 To 56
ara = s1.Cells(düşey, 1)
If s1.Cells(düşey, 1) <> "" And WorksheetFunction.VLookup(ara, alan, 5, 0) > 0 Then
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 4, 0)
Else
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 10, 0)
End If
If s1.Cells(düşey, 1) = "" Then s1.Cells(düşey, 7) = ""
Next
End Sub
nereyi yada nereleri düzeltmem lazım acaba ?
 

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
Kodlarınızı "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" olayına yazmışsınız hatanız burada, bu olayda içeriği değiştiğinde değil hücre seçildiğinde kod çalışacaktır, kodu worksheet_change() olayına yazarak deneyin. Benim eklediği dosyada bu olaya yazılmıştır.
 

bravo64

Altın Üye
Katılım
21 Eylül 2005
Mesajlar
184
Excel Vers. ve Dili
ofis 365 İngilizce
Altın Üyelik Bitiş Tarihi
25-10-2024
Tamam söylediğiniz gibi yaptım..Bu sefer sistem kilitleniyor..Ã?nce cursor titriyor sonra kilitleniyor..
 

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
Bunun sebebini kodlara bakarak söylemek mümkün değil, dosyanızı eklerseniz onun üzerinden gidelim.
 

bravo64

Altın Üye
Katılım
21 Eylül 2005
Mesajlar
184
Excel Vers. ve Dili
ofis 365 İngilizce
Altın Üyelik Bitiş Tarihi
25-10-2024
dosya ekte yer alıyor..Zahmet olacak size..
çok 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. Bu kod hücreden değer seçtiğiniz anda o değere ait veriyi bulacaktır.

[vb:1:a6f62b3d81]Private Sub Worksheet_Change(ByVal Target As Range)
Dim düşey As Integer
On Error Resume Next
Set s1 = Sheets("tabela sa-1")
Set s2 = Sheets("stokraporu")
If Intersect(Target, [a:a]) Is Nothing Then Exit Sub
Set alan = s2.Range("b3:l500")
ara = Target.Value
düşey = Target.Row
If Target <> "" And WorksheetFunction.VLookup(ara, alan, 5, 0) > 0 Then
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 4, 0)
Else
s1.Cells(düşey, 7) = WorksheetFunction.VLookup(ara, alan, 10, 0)
End If
If Target = "" Then s1.Cells(düşey, 7) = ""
End Sub[/vb:1:a6f62b3d81]
 

bravo64

Altın Üye
Katılım
21 Eylül 2005
Mesajlar
184
Excel Vers. ve Dili
ofis 365 İngilizce
Altın Üyelik Bitiş Tarihi
25-10-2024
Süper oldu sevgili leventm,çok teşekkür ederim..
 
Üst