- Katılım
- 5 Ocak 2009
- Mesajlar
- 1,586
- Excel Vers. ve Dili
- 2003 Türkçe
Selam,
Aşağıdaki kodlar ile "jef-ayar" sayfasının B sütunundaki hücreye 1'den 582'ye kadar sayı girip, diğer hücrelere veriler getiriyorum. örneğin B hücresine 582 girdiğimde A ve B hücrelerindeki sayıların başına "2012-" gelmesini sağladım. Ancak, 198 kere "Worksheet_Change" Makrosu çalışıyor.
Döngüyü
kodlarıyla çözüyorum.Ancak, aşağıdaki kodlara göre "Worksheet_Change" Makrosu sonsuz döngü olması gerekirken neden 198 kere çalışıyor? 198 sayısı nereden geliyor? çok merak ettim bir türlü bulamadım.
Dosyam ektedir.
Yardımcı olabilirseniz çok sevinirim.
Aşağıdaki kodlar ile "jef-ayar" sayfasının B sütunundaki hücreye 1'den 582'ye kadar sayı girip, diğer hücrelere veriler getiriyorum. örneğin B hücresine 582 girdiğimde A ve B hücrelerindeki sayıların başına "2012-" gelmesini sağladım. Ancak, 198 kere "Worksheet_Change" Makrosu çalışıyor.
Döngüyü
Kod:
Application.EnableEvents = False
Cells(sat, "B") = bu_yil & "-" & veri.Cells(bulunan.Row, "B")
Application.EnableEvents = True
Dosyam ektedir.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim veri As Worksheet
Dim aranan As String
Dim bulunan As Range
Dim WF As WorksheetFunction
Set veri = ThisWorkbook.Worksheets("veri")
Set WF = WorksheetFunction
bu_yil = Year(veri.Cells(2, "C")) 'bu yıl
If Intersect(Target, Range("B2:B65536")) Is Nothing Then Exit Sub
target_son = Target.Rows.Count
For i = 1 To target_son
If InStr(Target.Cells(i).Value, "-") = 0 Then
aranan = Target.Cells(i).Value
Else
aranan = Split(Target.Cells(i).Value, "-")(1)
End If
sat = Target(i).Row
Set bulunan = veri.Range("B2:B65536").Find(aranan, , xlValues, xlWhole)
If aranan = "" Then
Range("A" & sat & ":A" & sat).ClearContents
Range("C" & sat & ":H" & sat).ClearContents
ElseIf Not bulunan Is Nothing Then
Cells(sat, "A") = bu_yil & "-" & veri.Cells(bulunan.Row, "A")
Cells(sat, "B") = bu_yil & "-" & veri.Cells(bulunan.Row, "B")
Cells(sat, "C") = veri.Cells(bulunan.Row, "C")
'Cells(sat, "D") = veri.Cells(bulunan.Row, "D")
Cells(sat, "E") = veri.Cells(bulunan.Row, "H")
Cells(sat, "F") = veri.Cells(bulunan.Row, "J")
End If
Next
Cells(sat, "G") = Cells(sat, "G") + 1 'kodlar kaç kere çalışıyor
End Sub
Ekli dosyalar
Son düzenleme:
