False ve True sorunu

Katılım
5 Eylül 2007
Mesajlar
1,247
Excel Vers. ve Dili
ofis 2010
Altın Üyelik Bitiş Tarihi
21-07-2024
Merhaba; bazı makrolarda tam anlamasında Application.ScreenUpdating = False ve makro sonunda Application.ScreenUpdating = True yazılıyor.
ancak bazı durumlarda böyle yazdığı halde çalışmayı kapatıp açmadan makro tekrar çalışmıyor. Bunu önlemek için ayrı makro olsa da her makrodan sonra onu çalıştırarak bu sorunu kaldırma imkanı olabilir mi? Bazı çalışmalarda konuya vakıf olmadığımız için bir çok makroyu çalıştırıyoruz. Onların üzerinden çözmek zor oluyor. Teşekkürler.
Kod:
Sub yenilenen_DURUM()
Application.ScreenUpdating = False
On Error Resume Next
Set S1 = ThisWorkbook.Worksheets("HAREKET")
Set S2 = ThisWorkbook.Worksheets("TRANSFER_DURUM")
S2.Range("a2:a65536").ClearContents
S2.Range("a2:d65536").Borders.LineStyle = xlNone

For i = 3 To S1.Range("d65536").End(xlUp).Row
If WorksheetFunction.CountIf(S1.Range("d2:d" & i), S1.Cells(i, "d")) = 1 Then
sonsatir = S2.Range("A65536").End(xlUp).Row + 1
S2.Cells(sonsatir, 1) = S1.Cells(i, 4)
S2.Range("a" & sonsatir & ":d" & sonsatir).Borders.LineStyle = xlContinuous 'kenar çizgisi oluşturmak
End If
Next i

Application.ScreenUpdating = True
MsgBox "İşlem TAMAM.", vbInformation

End Sub
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
1.
Eğer kodunuz içinde On Error Resume Next böyle bir satırınız varsa kodlar sonlanmadan önce On Error Goto 0 diyerek resetlemelisiniz.

2.
Application.ScreenUpdating = False
bu satırı kullanmak kodlar çalışırken ekranın update etmemesi, göz konforu ve kod hızı içindir.
Yine kodlarınız sonlanmadan önce Application.ScreenUpdating = True demelisiniz ki resetlemiş olasınız. Yoksa excel ekranında sıkıntı çekersiniz.

Bu ikisini doğru yapıyorsanız sıkıntı olmaması lazım.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu verdiğiniz kodda öyle bir sorun olma diye düşünüyorum. Çünkü on error resume next satırı ile hata halinde sonraki satıra geç diyorsunuz. Eninde sonunda True satırına gelip makro sonlanacaktır.

Eğer bu satır yoksa kod False'tan sonra hata olduğunda değer False olarak kalarak makro sonlanır, bu durumda tekrar aktif etmek için ayrı bir makro çalıştırmak gerekir.
 
Katılım
5 Eylül 2007
Mesajlar
1,247
Excel Vers. ve Dili
ofis 2010
Altın Üyelik Bitiş Tarihi
21-07-2024
Bu işlemde sorun yoktur, sadece örnek olsun diye yazdım ama zammedersem yanlış yazdım. Bu örnek değil de Application.EnableEvents = True örnekli kodu soracaktım. Böyle kodların kapatılması unutulduğunda yeni makro çalışmıyor.
Kod:
Sub Carp()
On Error Resume Next
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual

    Application.EnableEvents = False

    Dim Bak As Long
    For i = 2 To [A2000].End(3).Row
        With Worksheets("URUN_LISTE")
            .Cells(i, "F").Value = Cells(i, "D").Value * Cells(i, "E").Value
        End With
     Next
     Range("F:F").NumberFormat = "#,##0.00"
     Application.EnableEvents = True
     Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic

End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Kapatılmasını unutan kişi muhtemelen düzeltilmesini sağlayacak kodları da eklemeyi unutacaktır.

Bunun engellemenin en iyi yolu açılan ya da kapatılan her kaydın kapatılmasını ya da açılmasını sağlayacak kodları da o anda eklemesidir.
Örneğin If sorgusu başlattığınızda altına End If satırını da ekleyip aradaki satırları sonra doldurmalısınız.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,317
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sizi sıkıntıya sokan satır;

Application.EnableEvents = False

Bu satır uygulamada ki bütün olayları durduran koddur. Dikkatli kullanılması gerekir.

Kodun çalışması anında kod durursa ya da tamamlanması bitmeden yarıda kesilirse bu kod TRUE olmayacağı için bahsettiğiniz sıkıntıları yaşamanız normaldir.
 
Katılım
5 Eylül 2007
Mesajlar
1,247
Excel Vers. ve Dili
ofis 2010
Altın Üyelik Bitiş Tarihi
21-07-2024
Hazır kodları kullanarak bir şeyler yapmaya çalışınca haliyle aksamalar oluyor. Dediğiniz gibi kullandığımız da kontrol etmek lazım. Teşekkürler
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Bunu dikkatli kullanmak lazım,hatta hiç kullanmasanız daha doğru olur.
on error resume next.
bunuda mümkünse kullanmayın.
application.enableevents = false.
 
Üst