- Katılım
- 4 Ocak 2006
- Mesajlar
- 12,073
- Excel Vers. ve Dili
-
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Makro aşağıdaki gibi daha doğru oldu ama maalesef belirttiğiniz gibi 4. satırdaki değişiklikleri dikkate almıyor. Daha doğrusu 30. satırı kopyalayıp ilgili yere yapıştırma döngüsünü işletmiyor. Nedenini çözemedim. Başka arkadaşlar umarım çözüm bulurlar:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [C5:C15]) Is Nothing Then GoTo 10
If Selection.Count > 1 Then Exit Sub
sat = Target.Row
sut = (sat - 1) * 8
If Target = "" Then
Range("D" & sat & ":I" & sat).ClearContents
Exit Sub
End If
a = 0
If Cells(sat, "D") = Cells(30, sut) And Cells(sat, "E") = Cells(30, sut + 1) And Cells(sat, "F") = Cells(30, sut + 2) _
And Cells(sat, "G") = Cells(30, sut + 3) And Cells(sat, "H") = Cells(30, sut + 4) And Cells(sat, "I") = Cells(30, sut + 5) Then
Exit Sub
Else
Application.ScreenUpdating = False
Do
Range(Cells(30, sut), Cells(30, sut + 5)).Copy: Cells(sat, "D").PasteSpecial Paste:=xlValues
a = a + 1
Loop Until Cells(sat, "D") = Cells(30, sut) And Cells(sat, "E") = Cells(30, sut + 1) And Cells(sat, "F") = Cells(30, sut + 2) _
And Cells(sat, "G") = Cells(30, sut + 3) And Cells(sat, "H") = Cells(30, sut + 4) And Cells(sat, "I") = Cells(30, sut + 5) Or a > 10
Application.ScreenUpdating = True
End If
10:
If Intersect(Target, [AL4:DN4]) Is Nothing Then Exit Sub
If Selection.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
sut = Target.Column - 6
sat = sut / 8 + 1
'[D1] = sat
'[E1] = sut
'Cells(1, sut) = Target.Column + 2 Mod 8
If Target.Column + 2 Mod 8 <> 0 Then Exit Sub
a = 0
If Cells(sat, "D") = Cells(30, sut) And Cells(sat, "E") = Cells(30, sut + 1) And Cells(sat, "F") = Cells(30, sut + 2) _
And Cells(sat, "G") = Cells(30, sut + 3) And Cells(sat, "H") = Cells(30, sut + 4) And Cells(sat, "I") = Cells(30, sut + 5) Then
Exit Sub
Else
Application.ScreenUpdating = False
Do
Range(Cells(30, sut), Cells(30, sut + 5)).Copy: Cells(sat, "D").PasteSpecial Paste:=xlValues
a = a + 1
Loop Until Cells(sat, "D") = Cells(30, sut) And Cells(sat, "E") = Cells(30, sut + 1) And Cells(sat, "F") = Cells(30, sut + 2) _
And Cells(sat, "G") = Cells(30, sut + 3) And Cells(sat, "H") = Cells(30, sut + 4) And Cells(sat, "I") = Cells(30, sut + 5) Or a > 10
Application.ScreenUpdating = True
End If
If a > 10 Then MsgBox "10 denemede sonuca ulaşılamadğından işlem sonlandırıldı!"
End Sub