Ömer BARAN
Uzman
- Katılım
- 8 Mart 2011
- Mesajlar
- 12,986
- Excel Vers. ve Dili
- Office 2013 ( 32 bit ) TÜRKÇE
Sayfayı yenileyip bundan önceki cevabıma tekrar bakın, ufak bir kısmı düzeltmeyi atlamışım.
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Revize ettiğiniz şekilde tekrar önceki modulü silip yeni modul olarak çalıştırdım. Ancak bu kez hata vermedi. Ama hiçbirşey de yapmadı. Yani makroyu çalıştırdım ama hiçbir hareket olmadı maalesef. F8 yapıp adım adım baktım orda da bir hata yok.Sayfayı yenileyip bundan önceki cevabıma tekrar bakın, ufak bir kısmı düzeltmeyi atlamışım.
Hocam gönderdiğiniz dosyada sayfalardaki formüllerin güncellenmesini istediğini anladığınız belirtmişsiniz. Aslında bizim F2 ve ENTER mantığını kullanma mantığı da tam olarak burdan kaynaklanıyordu. Yani siz son kod çalışmanızda aslında sayfalara "F9" işlemi yaptırıyorsunuz. Ama, hayır. Hücrelerde yer alan formüller için bu işlemiyor. Hücrelerin içerine girip ENTER yapmak gerekiyor Sıfırlanması için. İlk çalışmanızda yani "Has.Formula" şeklinde yazmış olduğunuz kodlar tam olarak F2>>ENTER mantığını karşılıyor ve istenilen sütun ve satırlarda hücreleri sanki F2>ENTER yapmış gibi oluyordu. Ama şu anki "Calculate" şeklinde kodladığınız makro sayfaya aslında "F9" yaptırıyor o nedenle de belirtlien hücre aralıklarındaki hücreler F2>ENTER gibi sıfırlanmıyor aslında. Durumu daha iyi anlaşılır olması için bana gönderdiğiniz bu son dosyada A-B-C sayfalarında R ve S sütunlarında bazı hücreleri geçmiş tarihe çevirdim. Makroyu çalıştırdığınızda tarihlerin şimdiki tarihle güncellenmediğini eski tarihte kaldığını görüceksiniz. Ancak o eski tarihli hücrelerin içine girip ENTER yaptığınızda şimdi tarih sonucu veredğini görüceksiniz. Saygılarımla. Dosya ekte.Dosya Burda.FreezeTimeGeriDosya BURADA.
Ömer Hocam, size daha önce söylemiş miydim hiç???O zaman; 4 numaralı cevabımda verdiğim kod'un başına ve sonuna,
son verdiğim koddaki gibi screen.Updating ve calculation true/false satırlarını ekleyerek bir deneyin bakalım.
Daha evvel bahsettiğiniz hız sorununun ortadan kalması gerekir.
Ömer Hocam ondan bahsetmiyorum. Size daha önce söylemiş miydim? Yani; Harika olduğunuzu15 numaralı cevapta, 30 sayfalı belgede 30 dakika beklediğinizden söz etmiştiniz
ve onun üzerine acaba calculate ile bir denesek mi diye düşünerek devam etmiştim.
Sub SIFIRLAMA()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each shf In ActiveWorkbook.Sheets
Set s = Sheets(shf.Name)
If shf.Name <> "MAKRO AYARLAR" And shf.Name <> "TABLO" Then
If s.[A1].HasFormula Then s.[A1].Formula = s.[A1].Formula
For sat = 25 To 54
For sut = 18 To 19
If s.Cells(sat, sut).HasFormula Then s.Cells(sat, sut).Formula = s.Cells(sat, sut).Formula
Next
Next
End If
Next
Set s = Nothing
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
Eyvallah, tarz olarak bir şeyi tamamlamadan peşini bırakmak gibi bir huyum yoktur.Ömer Hocam ondan bahsetmiyorum. Size daha önce söylemiş miydim? Yani; Harika olduğunuzu
Hocam harikasınız. Allah razı olsun. Dediğiniz şekilde revize ettikten sonra artık asıl dosyamda 30 sayfayı tam olarak 3-4 saniye içersinde kusursuz olarak neticelendirdi. Hiçbir hata yok. Nasıl istiyorsak öyle çalışıyor. Çalışmasını istemediğimiz sayfalarda da çalışmıyor. Nasıl mutluyum
Benim için harcadığınız mesai için de teşekkür ederim gerçekten. Hakkınızı ödeyemeyiz.Son dediğiniz değişikliklerle kod ekteki gibi oldu. Tekrar tekrar sağolun. Allah razı olsun.
Rich (BB code):Sub SIFIRLAMA() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For Each shf In ActiveWorkbook.Sheets Set s = Sheets(shf.Name) If shf.Name <> "MAKRO AYARLAR" And shf.Name <> "TABLO" Then If s.[A1].HasFormula Then s.[A1].Formula = s.[A1].Formula For sat = 25 To 54 For sut = 18 To 19 If s.Cells(sat, sut).HasFormula Then s.Cells(sat, sut).Formula = s.Cells(sat, sut).Formula Next Next End If Next Set s = Nothing Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.." End Sub
Evet hocam, tabiki dosyamı bir gün Teamweaver aracılığı ile sizinle paylaşırım. Bu arada 3-4 dakika değil 3-4 saniye içinde neticelendirdiğimi yazmıştım önceki mesajımda kodda yaptığımız son revize sonrası. Tekrar tekrar çok teşekkür ederim. Geceniz hayırlı olsun. İleride dosyam bittiğinde tüm dosyamı Makrolandırmak istiyorum aslında. Çünkü şu anda biraz hantal çalşıyor. Ama şu andaki asıl amacım da aslında Algoritmik işleyişini, Fonksiyon ve Formüllerle projeyi tamamlamak. O bittiğinde tüm dosyayı Makrolandırma konusunda eğer olursa ilk sizden yararlanmak isterim (ücreti mukabilinde olmak kaydıyla) , şayet siz eğer müsait olamazsanız tavsiyelerinizi dinlerim mutlaka. Hayırlı geceler tekrardan . Çok ama çok teşekkürler yardımlarınız için tekrardan.Eyvallah, tarz olarak bir şeyi tamamlamadan peşini bırakmak gibi bir huyum yoktur.
İhtiyacınızın tam olarak görüldüğüne sevindim. 3-4 dakika bu makro için uzun bir süre bence.
Aslına bakarsanız dosyadaki işlemlerinizi merak etmiyor değilim ama neyse artık.
Başarılar, iyi çalışmalar dilerim.
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Application.Iteration = False
End Sub
Private Sub Workbook_Open()
Application.Iteration = True
End Sub
Teşekkürler hocam. Bu kodu kaydedip dosyamda istemediğim bir değişikliğe neden olmazsa eğer dediğiniz gibi yapacağım. Çok sağolun tekrardan. İyi geceler.Bu dosya ile ilgili bir tavsiyem de şöyle olsun.
İşlemleriniz/amacınız açısından uygunluğuna/doğruluğuna siz karar vereceksiniz elbette.
Dosya açılırken yinelemeli hesaplamayı otomatik olarak aktif hal getirmek, dosya kapanırken de tekrar pasifleştermek yerinde olur sanırım.
bunun için, aşağıdaki kodu VBA ekranında BuÇalışmaKitabı (ThisWorkbook) bölümüne yapıştırın.
Rich (BB code):Private Sub Workbook_AfterSave(ByVal Success As Boolean) Application.Iteration = False End Sub Private Sub Workbook_Open() Application.Iteration = True End Sub