ÇÖZÜLDÜ/Makroyu istenilen sayfalarda çalıştırmak ve hücre aralığı eklemek.

Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Kod:
Sub Sıfırla()
ActiveSheet.Range("R25:S54").Select
For i = 1 To WorksheetFunction.CountA(Range("R25:S54"))
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Next
End Sub
Arkadaşlar ekteki makro tam olarak istediğimi karşılıyor(İşlem mantığı yönünden). Ancak bu kod sadece aktif olan sayfada çalışıyor. Bu makroyu tetiklediğimde "A,B VE C" sayfalarında işlem yapsın istiyorum. Ayrıca yukarıdaki kod sadece "R25:S54" aralığında işlem yaparken buna ek olarak belirttiğim sayfalarda "A1:A30" aralığında da yukarıdaki kodun yaptığı işlemi yapmasına ihtiyacım var. Makroda henüz yeniyim "A1:A30" aralığını yukarıdaki makroya nasıl eklerim? Ve bu makroyu tetiklediğimde "A,B ve C sayfalarında çalışmasını nasıl sağlarım? Şimdiden teşekkürler.
 

Ö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.
Merhaba.

-- Soru örnek belge üzerinden sorulmadığından cevap da biraz afaki olacak.

Mevcut For...Next döngüsünü, sayfaları temsilen yeni bir For...Next döngüsü içine
ya da işlem belgedeki tüm sayfalarda yapılacaksa (istisna sayfalar varsa basit bir If...End If kod blokuyla sayfa adı kontrol edilebilir)
For each shf In TihsWorkbook.Sheets ..... Next gibi bir döngü içine alınarak işlem yaptırabilirsiniz.
Tabi burada sayfa adına bağlı olarak hangi alanda işlem yapılacağı da yina sayfa adına göre belirlenebilir.

-- Aslına bakarsanız, belki de F2 >> ENTER yerine belki başka türlü de sonuç alınabilir. Bunun için, örnek belge ve verileri görmek gerek.
.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Ömer Bey, örnek belgeyi ekledim.
Aslında F2 ve ENTER şeklinde seçili hücre aralığına tek tek bu işlemi yaptırmak "Sayfayı Yeniden Hesapla" ile aynı sonucu vermediğinden ve hücrelerin içini girip formülü ENTER yapmadan sıfırdan çalışmaya başlamamasından kaynaklanıyor. Ben de seçili hücre aralıklarındaki hücrelerin yeniden hesap yapmaya başlaması için F2 ve ENTER'a dayanan bir makro düşündüm.
Ancak bu makroyu tetiklediğimde Çalışma Kitabındaki İstediğim "A,B ve C" sayfalarınıda uygulamasını istiyorum. Ek olarak yukarıda paylaştığım "R25:S54" hücre aralığına ek olarak bir de uygulayacağı sayfada "A1" hücresi var. Başta "A1:A30" aralığı olarak belirtmiştim ama F2 ve ENTER işlevini sadece istedeğim sayfalarda "A1" hücresine uygulaması yeterli imiş. Tabii "R25:S54" hücre aralığı da var. Tabii siz F2 ve ENTER dışında da çözüm olabileceğini sözlemişsiniz. Ayrıca mesajınızda belirttiğiniz "End If" vesaire kodlara henüz hakim olamadığımdan nasıl yapılır bilmiyorum. İlginiz için teşekkürler. Örnek belge ekte.Makro için tıklaynız...
 

Ö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.
Tekrar merhaba.
Aşağıdaki kod, ismi BAZ ve D olmayan sayfalarda A1 ve R25:S54 aralığındaki formüllerin yenilenmesini sağlar.
Bir deneyin bakalım.
Rich (BB code):
Sub SIFIRLA_BRN()
For Each shf In ThisWorkbook.Sheets
    Set s = Sheets(shf.Name)
    If s.Name <> "BAZ" And s.Name <> "D" 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
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
 
Son düzenleme:
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Tekrar merhaba.
Aşağıdaki kod, ismi BAZ ve D olmayan sayfalarda A1 ve R25:S54 aralığındaki formüllerin yenilenmesini sağlar.
Bir deneyin bakalım.
Rich (BB code):
Sub SIFIRLA_BRN()
For Each shf In ThisWorkbook.Sheets
    Set s = Sheets(shf.Name)
    If s.Name <> "BAZ" And s.Name <> "D" Then
        s.[A1].Formula = s.[A1].Formula
        For sat = 25 To 34
            For sut = 18 To 19
                s.Cells(sat, sut).Formula = s.Cells(sat, sut).Formula
            Next
        Next
    End If
Next
Set s = Nothing
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
Hemen Deniyorum Hocam. Mesajınızı şimdi gördüm.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Tekrar merhaba.
Aşağıdaki kod, ismi BAZ ve D olmayan sayfalarda A1 ve R25:S54 aralığındaki formüllerin yenilenmesini sağlar.
Bir deneyin bakalım.
Rich (BB code):
Sub SIFIRLA_BRN()
For Each shf In ThisWorkbook.Sheets
    Set s = Sheets(shf.Name)
    If s.Name <> "BAZ" And s.Name <> "D" Then
        s.[A1].Formula = s.[A1].Formula
        For sat = 25 To 34
            For sut = 18 To 19
                s.Cells(sat, sut).Formula = s.Cells(sat, sut).Formula
            Next
        Next
    End If
Next
Set s = Nothing
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
Hocam gönderdiğiniz kodu çalıştıramadım maalesef. "Run Time Error-9" hatası verdi. "For sat = 25 To 34" olarak yer alıyor ama "R25:S54" aralığı olacağından koddaki "34"ü "54" olarak revize etmem uygun mudur Hocam?
 
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.
Kod'un uygulandığı belge ekte.
34'ü 54 olarak değiştirerek uygulayın, gönderdiğim belgede hala 34 olarak duruyor.
 

Ekli dosyalar

Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Kod'un uygulandığı belge ekte.
34'ü 54 olarak değiştirerek uygulayın, gönderdiğim belgede hala 34 olarak duruyor.
Hocam gönderdiğiniz belgeyi almak için Altın Üyelik sayfasında e-mail ve şifremi giriyorum ancak doğru olmasına rağmen giriş yapamıyorum. Neden? Kullanıcı adı veya şifre hatalı diyor. Halbuki doğru. Ve zaten email soruyor kullancı adı da değil. Anlamadım. Ne yapmam gerekir?
 

Ö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.
ALTIN ÜYELİK olayını zaman zaman unutuyorum.
Belgeye, fareyle BURAYA tıklayarak erişebilirsiniz.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
ALTIN ÜYELİK olayını zaman zaman unutuyorum.
Belgeye, fareyle BURAYA tıklayarak erişebilirsiniz.
Hocam gönderdiğiniz belgeyi çalıştırdığımda "Enable İteratice Calculation" bölümünün pasif olduğunu gördüm. Normal de benim çalışma sayfamda işlem gören hücreler kendilerine de başvurduğundan Excel Options Formulas bölümündeki "Enable İterative Calculation" seçili olması gerekiyor. Size gönderdiğim dosyayı da bu şekilde gönderdiğimi hatılrıyorum. Diğer türlü için ise kod sadece A1 hücresi için çalıştı. O hücre de F2>>ENTER'ı taklit eder şekilde normal de sonuç boş gözükürdü. Sizin kodunuzda sonucu "0" olarak gösterdi. Ayrıca "R25:S54" aralığındaki hücrelerde bir değişiklik de olmadı maalesef. Yani "R25:S54" hücre aralığındaki sonuçlar sabit kaldı. Neden böyle oluyor Hocam.:)
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Hocam gönderdiğiniz belgeyi çalıştırdığımda "Enable İteratice Calculation" bölümünün pasif olduğunu gördüm. Normal de benim çalışma sayfamda işlem gören hücreler kendilerine de başvurduğundan Excel Options Formulas bölümündeki "Enable İterative Calculation" seçili olması gerekiyor. Size gönderdiğim dosyayı da bu şekilde gönderdiğimi hatılrıyorum. Diğer türlü için ise kod sadece A1 hücresi için çalıştı. O hücre de F2>>ENTER'ı taklit eder şekilde normal de sonuç boş gözükürdü. Sizin kodunuzda sonucu "0" olarak gösterdi. Ayrıca "R25:S54" aralığındaki hücrelerde bir değişiklik de olmadı maalesef. Yani "R25:S54" hücre aralığındaki sonuçlar sabit kaldı. Neden böyle oluyor Hocam.:)
Excel Options Formulas bölümündeki "Enable İterative Calculation" seçili iken de "Run Time Error-9" hatası veriyor yine.
 

Ö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.
Yaptığınız işlemi, amacı tam olarak gerçekten anlamış değilim.
Kod A1 için ne yapıyorsa, diğer R:S sütunu hücreleri için de aynısını yapıyor durumda.

Şu an ben de yinelemeli hesaplama onay kutusunu işaretleyerek kodu çalıştırdığımda A1 hücresi BOŞ sonuç veriyor durumda.
Bu onay kutusu işaretli değilse sonuç 0 oluyor doğrudur. Herhangi bir hata almıyorum.
VBA ekranını açıp F8 tuşuyla kodu adım adım çalıştırın, bakalım hangi satırda hangi durumda hata alıyorsunuz, merak ettim.
R:S sütunlarının biçimini saat, dakika ve saniye görecek şekilde (Türkçe için böyle: gg.aa.yyyy ss:dd:nn) ayarlayarak deneyin.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Yaptığınız işlemi, amacı tam olarak gerçekten anlamış değilim.
Kod A1 için ne yapıyorsa, diğer R:S sütunu hücreleri için de aynısını yapıyor durumda.

Şu an ben de yinelemeli hesaplama onay kutusunu işaretleyerek kodu çalıştırdığımda A1 hücresi BOŞ sonuç veriyor durumda.
Bu onay kutusu işaretli değilse sonuç 0 oluyor doğrudur. Herhangi bir hata almıyorum.
VBA ekranını açıp F8 tuşuyla kodu adım adım çalıştırın, bakalım hangi satırda hangi durumda hata alıyorsunuz, merak ettim.
R:S sütunlarının biçimini saat, dakika ve saniye görecek şekilde (Türkçe için böyle: gg.aa.yyyy ss:dd:nn) ayarlayarak deneyin.
Hocam minettarım. Çok çok teşekür ederim. Sanırım gönderdiğiniz makroyu kaydettiğim yer ile ilgili sorun oluyordu.:) Ben normalde Makroları "Personel Macro Workbook" altına kaydediyorum. Sizin son gönderdiğiniz kodu da öyle yapmıştım. Ancak daha sonra ordan silerek normal çalışma kitabında kaydettim gönderdiğiniz makroyu. Ve öyle yapınca çalıştı. Makroyu "Personel Macro Workbook" altına kaydedince neden "Run Time Error-9 hatası" veriyor peki hocam? Bunun için yapabileceğim birşey var mı?
 

Ö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.
Estağfurullah. İhtiyaç görüldüyse mesele yok.
Belirttiğim gibi, VBA ekranında iken kodu F8 ile adım adım çalıştırarak hata noktasını tespit edebilirsiniz.
Sanıyorum SAYFA DÖNGÜSÜnden kaynaklanıyor.
A sayfasını aktif hale getirip, sayfa döngüsünü kaldırıp sadece hücre döngüsünü çalıştırırsanız hata almayacağınızı tahmin ediyorum.
Eğer makronuzdaki hücre ve işlemler activesheet.... şeklinde olsaydı sorun yaşamazdınız sanıyorum.
 
Son düzenleme:
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Estağfurullah. İhtiyaç görüldüyse mesele yok.
Belirttiğim gibi, VBA ekranında iken kodu F8 ile adım adım çalıştırarak hata noktasını tespit edebilirsiniz.
Sanıyorum SAYFA DÖNGÜSÜnden kaynaklanıyor.
A sayfasını aktif hale getirip, sayfa döngüsünü kaldırıp sadece hücre döngüsünü çalıştırırsanız hata almayacağınızı tahmin ediyorum.
Eğer makronuzdaki hücre ve işlemler activesheet.... şeklinde olsaydı sorun yaşamazdınız sanıyorum.
Evet hocam. Bu kodu Personal Macro Workbook altına açtığım modüle ekleyerekte çalıştırabildim nihayetinde. Sizin gönderdiğiniz kodda sadece "For Each shf In ThisWorkbook.Sheets" >satırını> "For Each shf In ActiveWorkbook.Worksheets" şeklinde değiştirdim. Artık Personal Macro Workbook altındaki modülde başka çalışma kitaplarında da bu kodu çalıştırabiliyorum. İşin aslı asıl çalışma kitabım 30 sayfadan oluşuyor. Bu kodu orda denediğimde dosya yükünden mi kaynaklanıyor bilmiyorum ama makroyu tetiklediğim an mouse yarım saat boyunca döndü ve işlemi bitirmedi. Kod içersindeki hesaplamadan hariç tutmak istediğim iki sayfayı da belirttim diğer Çalışma kitabında. Ancak diğer Çalışma Kitabında 30 sayfa var. Makroyu tetiklediğimden beri 30 dakika boyunca mouse'ın dönüp durması sonucu işlemi neticelendirmedi? 30 Sayfalık bir çalışma kitabında bu makro yetersiz mi kalır hocam neden böyle olabilir?
 

Ö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.
Dosyayı ve formülleri görmeden bir şey söylemem yanlış olur.
En azından 4 numaralı cevapta yaptığım ekleme (kırmızı derklendirdim) doğrultusunda, kod'un yeni halini bir deneyin isterseniz.
.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Dosyayı ve formülleri görmeden bir şey söylemem yanlış olur.
En azından 4 numaralı cevapta yaptığım ekleme (kırmızı derklendirdim) doğrultusunda, kod'un yeni halini bir deneyin isterseniz.
.
Revize ettiğiniz şekilde kodun yeni halini denedim hocam. Ve aslında kodda sorun yok. Birkaç saattir türlü denemeler yaptım. Sorun şu ki; bahsettiğim 30 sayfalık çalışma kitabından 25 sayfasını çıkarıp tekrar kaydettim. Bu kez işlemi 10 dakika da sonlandırdı. Demek ki anladığım kadarı ile (siz daha iyi bilirsiniz); sorun sanırım hariç tutmak istediğimiz "BAZ" ve "D" isimli sayfalar haricindeki sayfaların satır ve sütun kesişimlerini sanırım aynı anda yapmaya çalıştığından ve sayfa sayıları 30 olunca örneğin 30xkat daha yavaşlıyor kod. Excel'in altında "Calculate" bölümüne baktığımda örneğin tek sayfa üzerinde işlem yapınca Calculate saniyede "20"kez yanıp sönerken eğer makro çalışma kitabında "30"sayfa üzerinde işlem yapıyorsa "Calculate" saniyede sadece "1"kez yanıp sürüyor. Bu da sanırım bize sayfa sayısının fazla olması ve hariç tutttuğumuz sayfalar dışındaki işlem yapılacak satır ve sütunları aynı anda işleme aldığından sürenin olağandışı uzamasına neden oluyor. Sanırım hariç tuttuğumuz sayfalar dışındaki sayfalar için her sayfayı bitirdiğinde diğer sayfanın işlemini yapması yani sayfaları sırasıyla bir sayfayı bitirip diğer sayfaya geçmesi sorunumuzu çözücek gibi gözüküyor. Bunu başarabilirsek sanırım sorun çözülmüş olucak hocam benim adıma. Teşekkürler tekrardan.
 

Ö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.
Tekrar merhaba.
Bir de aşağıdaki kodu dener misiniz?
Rich (BB code):
Sub SIFIRLA_BRN()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each shf In ThisWorkbook.Sheets
    If shf.Name <> "BAZ" And shf.Name <> "D" Then _
        Sheets(shf.Name).[A1:A30, R25:S54].Calculate
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
Son düzenleme:
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Tekrar merhaba.
Bir de aşağıdaki kodu dener misiniz?
Rich (BB code):
Sub SIFIRLA_BRN()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each shf In ThisWorkbook.Sheets
    If Sheets(shf.Name).Name <> "BAZ" And s.Name <> "D" Then _
        Sheets(shf.Name).[A1:A30, R25:S54].Calculate
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Son gönderdiğiniz kodu çalıştırdığımda "Run-Time Error 404" hatası verdi maalesef.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
F8 ile adım adım satırları denediğimde 6.satırda hata verdiğini gördüm. İlgili satır şu hocam.
Sheets(shf.Name).[A1:A30, R25:S54].Calculate
 
Üst