::.. Application.ScreenUpdating = False iken EKRANDA İŞLEM GÖSTERME..::

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
::.. App.Scr.Updating=False iken EKRANDA İŞLEM GÖSTERME..::

Herkese merhabalar !...

Excel belgemde çalışan makro mevcut bir sayfayı kopyalayıp, kopya sayfa üzerinde;
- bir toplama,
- maksimum bulma,
- sonuca göre bir hücre değerini başka bir sayfaya yazma
şeklindeki işlemi en fazla 1000 kez yapıyor.

İşlemleri bittiğinde kopyalanmış olan sayfayı silip, verileri yazdığı sayfayı aktive ediyor.
Bu işlem bittiğinde de aynı kodu True yapıp işlemi tamamlıyor.

Bu işlemler sırasında hız kazanmak için;
Kod:
Application.ScreenUpdating = False
koduyla ekranı durduruyorum.


Makro bu işleri yaparken, yukarıdaki işlemin % kaçını tamamladığını verilerin yazıldığı sayfada büyüyen sayı ( % 1'den % 100'e doğru ) biçiminde görüntülemem mümkün müdür?

İlgilenenlere teşekkürler.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Belki, Application.ScreenUpdating = False yerine başka bir kod ile mümkün olur diye bu konuyu açtım.

Maksadım tam olarak şöyle; uzun süren makro işlemi esnasında makronun işlem yaptığı sayfa yerine (makro o sayfadaki işlemine devam ettiği sürece) başka sayfayı aktive etmek ve burada; makronun, işlem yaptığı sayfadaki işlemlerin ne kadarını tamamladığı bilgisini görüntülemek. Bu sayfada aynı anda başka işlem yapmak istemiyorum.

Diğer sayfada beklerken; makronun işlemlerinin ne aşamada olduğunu % cinsinden ifade eden bir bilgi görüntülemek.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Bu konudaki maksadım;
-- makronun üzerinde işlem yaptığı sayfa ve veri yazdığı sayfayı
aktive etmeden işlem yapmasını sağlamak mümkün müdür? (Esas hedef bu)
veya
-- makronun yaptığı işlemin ne kadarının yapıldığını başka bir sayfada oransal olarak görebilmek.

İlgilenenlere şimdiden teşekkürler.
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,026
Excel Vers. ve Dili
2013 Türkçe
Aktif etmeden kodlar çalıştırılabilir. Ancak ScreenUpdating= False iken % olarak işeniyor ifadesi görülebilmesi için bir şey söyleyemeyeceğim.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
Merhaba

Userform üzerine progresbar koyarak deneyiniz.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
::.. Merhabalar Sayın Okumuş, Sayın Uzmanamele ..::

Aktif etmeden kodlar çalıştırılabilir.
Sayın Okumuş, ilginiz için teşekkür ederim, sayfayı aktif hale getirmeden kodda nasıl bir değişiklik yapmak icap eder acaba?

Kod yazma konusunda pek bilgim yok o yüzden yol göstermenizi rica edebilir miyim?

İnanın sizi fazla yorduğum için üzgünüm.

Merhaba
Userform üzerine progresbar koyarak deneyiniz.
Sayın uzmanamele, gerçek isminizi hatırlayamadım kusura bakmayınız.
Zaten nihai olarak excel belgemi formüllerden tamamen arındırıp tüm işlemleri UserFormlar üzerinden yaptırma hedefim vardı. Bu yüzden ProgresBar konusunu iyi aklıma getirdiniz. Teşekkürler.
ProgresBar konusuna bakacağım, örnekler bulup kendime uyarlabilirsem ne ala, ancak beceremezsem yeni konu açarak sizlerin ve diğer üyelerin katkılarını rica ederim artık.
Sağ olunuz.
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,026
Excel Vers. ve Dili
2013 Türkçe
Görsel açıdan olsun derseniz ilkel bir gösterim yaptım. Ama çok hızlı işlem yaptığından anlık bitiyor.
Sub Hesapla()
'Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set S = Sheets("Sayfa2")
S.Range("A3:F1000") = ""
Sheets("Sayfa1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "x"
Set x = Sheets("x")
Sheets("Sayfa1").Select
x.Columns(5).Insert

x.Range("E2") = "X"
Range("BI1:FG1").Interior.ColorIndex = 2
adet = WorksheetFunction.CountA(x.Range("F3:AS1000")) / 2
ActiveWindow.ScrollColumn = 60
For i = 1 To adet

a = Int(i * 100 / adet)
Range(Cells(1, 61), Cells(1, 61 + a)).Interior.ColorIndex = 4
Range("DF1") = "'% " & a

son = x.Cells(Rows.Count, "A").End(3).Row + 1
x.Range("E3:E" & son) = "=SUM(F3:AS3)"
mak = WorksheetFunction.Max(x.Range("E3:E" & son))
kac = WorksheetFunction.Match(mak, x.Range("E1:E" & son), 0)



son1 = S.Cells(Rows.Count, "A").End(3).Row

S.Range(S.Cells(son1 + 1, 1), S.Cells(son1 + 1, 4)) = x.Range(x.Cells(kac, 1), x.Cells(kac, 4)).Value
S.Range(S.Cells(son1 + 1, 5), S.Cells(son1 + 1, 6)) = x.Range(x.Cells(kac, 6), x.Cells(kac, 7)).Value
x.Range(x.Cells(kac, 6), x.Cells(kac, 7)) = ""
x.Range("F3:AS" & son).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft

Next
ActiveWindow.ScrollColumn = 1
Sheets("x").Delete

son = Cells(Rows.Count, "F").End(3).Row
Range("G3:G" & son) = "=A3&"" / ""&COUNTIF(A$3:A3,A3)&"". İşlem"""
Range("G3:G" & son) = Range("G3:G" & son).Value
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
::.. Çözüm Bulunmuştur ..::

Görsel açıdan olsun derseniz ilkel bir gösterim yaptım. Ama çok hızlı işlem yaptığından anlık bitiyor.
Sayın uzmanamele ve Sayın OKUMUŞ,
destek için teşekkürler.

Konu halledilmiştir.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,524
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

İnadına Türkçe ise, DETAYLI yerine AYRINTILI sözcüğünü kullanabilirsiniz :)
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
::.. Uyarı için teşekkürler ..::

Merhaba,
İnadına Türkçe ise, DETAYLI yerine AYRINTILI sözcüğünü kullanabilirsiniz :)
Uyarı için teşekkürler ediyorum.
Vesile oldunuz ve bu kelimenin Fransızca kökenli olduğunu fark ederek gerekli düzeltmeyi hemen yaptım.
Sağlıcakla kalınız.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst