• DİKKAT

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

Makroyu Diğer Sayfalarda Çalıştırma

Katılım
7 Mayıs 2017
Mesajlar
58
Excel Vers. ve Dili
2016 Türkçe
Herkese merhaba,

Toplamda 36 sayfam var. İlk sayfam Veri Girişi sayfası. İkinci sayfam da Stok Hareketleri sayfası. Veri girişi sayfasında aşağıdaki kodu buton ile çalıştırıp diğer 34 sayfada (Veri Girişi ve Stok Hareketleri sayfaları hariç) işlem yapmasını istiyorum. Bunu nasıl yapabilirim? Ya da bunu butonsuz otomatik olarak yapmak mümkün müdür?

Kod:
Sub goster()
For Each t In Range("M2:M73").Cells
If t.Value <> "0" Then 'boş hücreleri gösterir
t.EntireRow.Hidden = False
End If
Next t
End Sub

Çok teşekkür ederim.
 
Deneyiniz.
Kod:
Sub goster()
For i = 1 To Sheets.Count
a = Sheets(i).Name
If Sheets(i).Name <> "Veri Girişi " Or Sheets(i).Name <> "Stok Hareketleri" Then
Set sh = Sheets(a)
[COLOR="Red"][B]son=sh.Range("M" & Rows.Count).End(3).Row
For Each t In sh.Range("M2:M" & son)[/B][/COLOR]
If t.Value <> "0" Then 'boş hücreleri gösterir
t.EntireRow.Hidden = False
End If
Next t
End If
Next i
End Sub
 
Son düzenleme:
Çok teşekkür ediyorum. Tam istediğim gibi çalışıyor. Şimdi soracağım biraz saçma olacak ama gene de merak ediyorum.

Toplamda 34 sayfaya bakıyor ve bu sayfalarda M2'den M1200'e kadar kontrol yapıyor. Tabii bu durum da işlemin bayağı uzun sürmesine sebep oluyor. Bunu hızlandırmanın bir yolu var mı?

Aslında 33 sayfadaki maksimum satır sayısı 200, fakat bir tane sayfadaki satır sayısı 1200 olunca mecburen koda 1200 yazıyorum. Belki sayfa sayfa da satır sayılarını belli edersek kodun içinde işlem hızlanabilir ama kodu düşünemiyorum o zaman. :)
 
Yukarı mesajdaki kodu kontrol edin.
 
Anladığım kadarı ile bu kod her sayfanın son satırını kendisi buluyor bu şekilde 33 sayfada 180 satır işleme giriyor ve tek sayfada 1200 satır işleme giriyor. Doğru mudur?

Çok çok teşekkür ederim. :)
 
Rica ederim. Kaç saniyede kaç satır veri tarandığını görebilirsiniz.
Kod:
Sub goster()
[COLOR="red"]ilk = Timer[/COLOR]
For i = 1 To Sheets.Count
a = Sheets(i).Name
If Sheets(i).Name <> "Veri Girişi " Or Sheets(i).Name <> "Stok Hareketleri" Then
Set sh = Sheets(a)
son = sh.Range("M" & Rows.Count).End(3).Row
For Each t In sh.Range("M2:M" & son)
If t.Value <> "0" Then 'boş hücreleri gösterir
t.EntireRow.Hidden = False
[COLOR="Red"]satir = satir + 1[/COLOR]
End If
Next t
End If
Next i
[COLOR="red"]MsgBox Format(Timer - ilk, "0.000") & Chr(10) & "Saniyede" & Chr(10) & satir & Chr(10) & "SATIR veri tarandı", vbInformation, "vardar07"
[/COLOR]End Sub
 
Son düzenleme:
Hocam şimdi bu verdiğiniz son kod ile istediğim tam olmadı. Uygulama yöntemimi söylemem gerekiyordu sanırım. Ben bütün sayfalardaki satırları önce manuel olarak gizledim. Bu şekilde ne zaman ki O sütunundaki hücre 0'dan farklı bir değer alırsa göster butonu ile gösterebiliyordum. Şimdi satırları sayamadığı için bu kod ile satırları gösteremedim. Hız tabii ki önemli ama olmazsa da olmaz değil. Belki de kurduğum mantık yanlıştır.
 
İşlem yaptıkça sayacak şekilde #6 Nolu mesajdaki kodu yeniledim. Zaman ve satırı görebilmeniz için yapmıştım. Olmaz ise kırmızılı yerleri iptal edebilirsiniz.
 
Emeğinize sağlık. Zaman ve satır bilgisi mesaj olarak geliyor işlem sonunda.
 
Geri
Üst