Makro daha hızlı olabilir mi?

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,518
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160913
    Dim xRg As Range
    Application.ScreenUpdating = False
        For Each xRg In Range("C6:C45")
            If xRg.Value = "" Then
                xRg.EntireRow.Hidden = True
        
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg
    Application.ScreenUpdating = True
End Sub
Yukarıda ki makro çalışıyor ama aheste aheste çalışıyor. Bu makronun daha hızlı çalışması mümkün mü?

Kod sayfadan sayfaya geçtiği zaman otomatik olarak boş satırı gizliyor
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,786
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kod zaten çok hızlı çalışıyor sizin dosyanızın boyutu çok büyük olmalı veya formüller baya çok olmalı
bir de bunu dene

Rich (BB code):
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160913
With Application
.Calculation = xlManual
.ScreenUpdating = False
.EnableEvents = False
End With

Dim xRg As Range
For Each xRg In Range("C6:C45")
If xRg.Value = "" Then
xRg.EntireRow.Hidden = True
Else
xRg.EntireRow.Hidden = False
End If
Next xRg

With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlAutomatic
End With
End Sub
 

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,518
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Halit abi teşekkür ederim. En azından diğerinden hızlı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,157
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif;

Hız olarak daha iyi sonuç alabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Alan As Range, Veri As Range
    
    With Application
        .Calculation = xlManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    
    Range("C6:C45").EntireRow.Hidden = False
    
    For Each Veri In Range("C6:C45")
        If Veri.Value = "" Then
            If Alan Is Nothing Then
                Set Alan = Veri
            Else
                Set Alan = Union(Alan, Veri)
            End If
        End If
    Next
    
    If Not Alan Is Nothing Then Alan.EntireRow.Hidden = True
    
    With Application
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
 
Üst