• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

koddan dolayı excelin donması

Katılım
29 Ekim 2011
Mesajlar
77
Excel Vers. ve Dili
2010 türkçe
arkadaşlar excelde bir makro ile çalışıyorum fakat makroyu aktif hale getirdiğimde excel donuyor... Daha hızlı bir makro varmıdır acaba bir bakabilirmisiniz?
kullandığım makro şu;
Kod:
Sub Gizlesin()
  For Each t In Range("A1:A600").Cells
    If t.Value = "" Then 'boş hücreleri gizler
    t.EntireRow.Hidden = True
  End If
  Next t
End Sub

Sub Gostersin()
  For Each t In Range("A1:A600").Cells
    If t.Value = "" Then 'boş hücreleri gösterir
    t.EntireRow.Hidden = False
  End If
  Next t
 
Merhaba

Bu kodlar çok hızlı olmayan bir makinada bile en fazla 15 sn sürer.

Satır ve sütunlarda formüller varmı.

Dosyanızıda buraya ekleyebilirseniz tam sebebini öğrenebiliriz.
 
Merhaba

Bunu deneyiniz.
Kod:
Sub gizle()
    Range("A1:A600").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.EntireRow.Hidden = True
End Sub
Kod:
Sub göster()
    Range("A1:A600").Select
    Selection.EntireRow.Hidden = False
End Sub
 
sayın uzmanamale verdiğiniz kod sadece a1 hücresi boş olduğunda sadece a1 hücresini gizliyor... benim kodum a stununda boş olanların hepsini gizliyecek şekilde???

sayın zafer bey evet hücrelerde formüller mevcut...
 
Merhaba

verdiğiniz kod sadece a1 hücresi boş olduğunda sadece a1 hücresini gizliyor... benim kodum a stununda boş olanların hepsini gizliyecek şekilde???

sayın zafer bey evet hücrelerde formüller mevcut...

Hesaplamayı el ileye getirin ve kodları çalıştırın.Sonuç değişiyormu bakın.

En pratik çözümde Sn Süleyman bey'in önerdiği kodlar.Sizin kodlarınızla aynı işlemi görür.Ben denedim.
 
hesaplamaları elile girmem mümkün diil o kadar çok formül varki saatlerimi alır...
sayın süleyman bey in verdiği kod dediğim gibi sadece a1 hücresini giziyor eğer boşsa fakat benim istediğim a sütununda bütün boş olanların gizlenmesi...
Ayrıca benim kodum formül olduğu halde çalışıyor...
 
Merhaba

Kodlar düzgün çalışıyor.

Ekli dosyayı inceleyiniz.

Excel'de Hesaplama el ile özelliği vardır ondan bahsetmiştim.
Çok formüllü doyalarda hücrelerde işlem yaparken tekrar tekrar bütün hücreleri hesaplamaması için otomatik hesaplamayı devreden çıkarır.işlem bittikten sonra otomatik'e çevirirsiniz.

xp ve 2003 için.

Araçlar menüsü / Seçenekler / Hesaplama

kısmından
 

Ekli dosyalar

evet sizin verdiğiniz dosyada çalışıyor ancak kendi dosyama uyarlamaya çalışınca olmadı??? hesaplamayı el ile ye de çevirdim yine olmadı... Acaba başka neden olabilir?
 
Merhaba

Birde bunu deneyiniz.
Kod:
Sub dafa_fazla_gizle()
On Local Error Resume Next
    Range("A1:A600").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.EntireRow.Hidden = True
       
       Range("A1:A600").Select
        Selection.SpecialCells(xlCellTypeFormulas, 2).Select
        Selection.EntireRow.Hidden = True
    
    Range("A1:A600").Select
    Selection.SpecialCells(xlCellTypeFormulas, 18).Select
    EntireRow.Hidden = True
End Sub
 
Merhaba

Yapacak bir şey yok.Dosyayı gönderin inceleyelim.
Sadece gizlemek istediğiniz sayfa yeterli
 
dosya ekte

bu dosyada b20 hücresine girilen değerden sonra ctrl+d yapıldığında görünümün değiştiğini göreceksiniz... ve bilgiler B55 stunundaki sayı değiştiğinde spt düzeltme sayfasında sk2 yazanların sayısı değişiyor ve değiştikten sonra ctrl d yaptığımda boş olanlar gizleniyor... bu şekilde hızlı bir makro gerekli... yalnız makroyu eklediğimde VB gibi bir hata veriyor o yüzden dosyaya makroyu ekliyip kaydedemediğim için kullandığım makroyu aşağıda veriyorum...
Kod:
Sub Gizlesin()
  For Each t In Range("A1:A600").Cells
    If t.Value = "" Then 'boş hücreleri gizler
    t.EntireRow.Hidden = True
  End If
  Next t
End Sub

Sub Gostersin()
  For Each t In Range("A1:A600").Cells
    If t.Value = "" Then 'boş hücreleri gösterir
    t.EntireRow.Hidden = False
  End If
  Next t
End Sub
 

Ekli dosyalar

Merhaba

Ctrl+d ile gizlemenin bir alakası yok.Hücreleriniz boş değil , formül var o yüzünden boş gözüküyor.
A sütununda
EĞER(Bilgiler!$B$54>12;"SK1";"")


İlk kodları kullanacaksınız.Ekli dosyayı inceleyiniz. Yavaş değil 3sn'de gizliyor.
 

Ekli dosyalar

sayın zafer bey... tamam sizin kodlar çalışıyor ve gayet hızlı ama anlatmaya çalıştığım şey B20 hücresi diyelim 3, 3 iken gösteriyor istediğim yerleri ama B20 hücresindeki 3 değerini 4 ve ya 5 yaptığımda otomatik olarak altta çıkması gereken yazılar çıkmıyor bu yüzdende satır göstermesi yapılamıyor ???
 
bi yöntem daha geldi aklıma umarım işinize yarar... bir buton daha hazırlayıp tümünü göster makrosu yazdıktan sonra ilk olarak ona tıklayıp sonra gizleye tıkladığımızda olabiliceğini düşünüorum sizce olabilirmi zafer bey??? olabilirse tümünü göster butonu nasıl ekleyebilir açıklayabilirmisiniz???
 
Merhaba

Gönderdiğim dosyayı incelemedinizmi. Orada spt sayfasında hem gizle hemde göster düğmeleri mevcut
 
inceledim... göster e tıkladığımda formül olan hücreleri göstermediği için soruyorum zaten...
 
Merhaba


Kodlar istediğiniz hücreleri gizliyorsa,aynı şekildede gösterir.
Ayrıca bu kadar mesajlaştık.tekrar başa döndük Ben sizin ilk gönderdiğiniz çalışıyor dediğiniz kodlarda değişiklik yapmadım.

satırları göster kodlarını değiştirdim.
ekli dosyayı inceleyiniz.
 

Ekli dosyalar

sayın zafer bey sizide yoruyorum ama sizde çalışıyor dediğiniz kodlar bende çalışmıyor şöyleki son gönderdiğiniz ekli dosyadaki butonları bilgiler sayfasına kopyalayıp orda bi denermisiniz... ilginç bir şey ortaya çıkıyor ve göster butonuna tıklamadan önce B20 hücresindeki değeri artırdığıktan sonra göster dediğimde göstermesi gerektiği hücreleri göstermiyor anlatmaya çalıştığım şey bu ve sizden tek istediğim şey bir buton daha yapıp ne koşulda olursa olsun bütün satırların gösterilmesi ve bu iki butonun yanına eklenebilmesi tıpkı stunların tamamını seçip göster i tıkladığımızda gösterdiği gibi...
 
Merhaba,

Kodları aşağıdaki gibi değiştirirmisiniz. Gizle kodları, şartlı gizle yapmadan önce satırların tümünü gösterir sonra şarta göre gizleme yapar.

Kod:
Sub Gizle()
 
  With Application
    .ScreenUpdating = False
    .Calculation = xlManual
 
    [COLOR=blue]Cells.EntireRow.Hidden = False[/COLOR]
 
    For Each t In Range("A1:A600")
      If t.Value = "" Then
        t.EntireRow.Hidden = True
      End If
    Next t
 
    .ScreenUpdating = True
    .Calculation = xlAutomatic
  End With
 
End Sub
Kod:
Sub Goster()
 
  With Application
    .ScreenUpdating = False
    .Calculation = xlManual
 
    Cells.EntireRow.Hidden = False
 
    .ScreenUpdating = True
    .Calculation = xlAutomatic
  End With
 
End Sub
.
 
Geri
Üst