Soru Select komutunun işlevi

dengeceteris

Altın Üye
Katılım
21 Aralık 2019
Mesajlar
209
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
15-06-2025
Herkese merhabalar. Dosyamda bir problem yaşıyorum bunu çözmekte zorlandım yardımcı olursanız sevinirim.

Excel Çalışma kitabıma dışardan MİZAN çekiyorum. MİZAN1, MİZAN2 gibi 4 adet sayfam var. Birde bu mizanları çektikten sonra ANAMİZAN sayfasında ETOPLA ile yaptığım özetler var. Şimdi ben ETOPLA ile veriyi özetlerken özetle butonum MİZAN'şarın olduğu sayfada ve ben bu butonu çalıştırdığım zaman beni ANAMİZAN sayfasına yönlendiriyor. Sayfayı gizleyince ise "Hata kodu Run-Time Error 1004" veriyor ve beni s5.Select 'e yönlendiriyor. s5.Select yazan kısmı kaldırınca ise eksik ETOPLA işlemi yapıyor yada formülü daha alt satırlarda çalışmaya başlatıyor. ETOPLA formülünün hesaplaması bitince yine aynı sayfada kalmasını nasıl sağlayabilirim.

Şimdiden tşk ederim

s5.Select
son1 = s1.Cells(Rows.Count, 1).End(xlUp).Row "MİZAN1
son2 = s2.Cells(Rows.Count, 1).End(xlUp).Row "MİZAN2
son3 = s3.Cells(Rows.Count, 1).End(xlUp).Row "MİZAN3
son4 = s4.Cells(Rows.Count, 1).End(xlUp).Row "MİZAN4
son5 = s5.Cells(Rows.Count, 1).End(xlUp).Row "ANAMİZAN
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
485
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

s5.Select satırından önce aktif sayfanın adını bir değişkene alın. Örn; aktifSayfa = ActiveSheet.Name
Tüm işlemler bittikten sonra aktif sayfaya dönebilmesi içinde Sub'ın sonuna; Sheets(aktifSayfa).select

Bu geçişlerin görünmesini istemiyorsanız da Application.ScreenUpdating = False / True komutlarını kullanabilirsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,824
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Makro tarafında işlem yaparken Select komutunu kullanmanıza gerek yoktur.

Range("A:A") ifadesi sayfa belirtilmediğinden aktif sayfada işlem yapar. Ama aşağıdaki gibi yazarsanız ilgili sayfayı seçmenize gerek kalmadan işlem yapacaktır.

S5.Range("A:A")
 

dengeceteris

Altın Üye
Katılım
21 Aralık 2019
Mesajlar
209
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
15-06-2025
Sevgili Üstadlar.. Aşağıda tam formülüm var ve belirttiğiniz ibareleri nereye yazmamı veya nereyi revize etmem gerektiğini anlayamadım.

Set s1 = Sheets("MİZAN1")
Set s2 = Sheets("MİZAN2")
Set s3 = Sheets("MİZAN3")
Set s4 = Sheets("MİZAN4")
Set s5 = Sheets("ANAMİZAN")
Set wf = WorksheetFunction

son1 = s1.Cells(Rows.Count, 1).End(xlUp).Row

son2 = s2.Cells(Rows.Count, 1).End(xlUp).Row
son3 = s3.Cells(Rows.Count, 1).End(xlUp).Row
son4 = s4.Cells(Rows.Count, 1).End(xlUp).Row

son5 = s5.Cells(Rows.Count, 1).End(xlUp).Row

s5.Range("K3:K1000").ClearContents
s5.Range("M3:M1000").ClearContents
s5.Range("O3:O1000").ClearContents
s5.Range("Q3:Q1000").ClearContents

s5.Range("D3:R1000").NumberFormat = "#,##0.00"

a1 = s1.Range("P3:p" & son1).Address(external:=True)
a2 = s1.Range("U3:U" & son1).Address(external:=True)
c1 = s2.Range("P3:p" & son2).Address(external:=True)
c2 = s2.Range("U3:U" & son2).Address(external:=True)
d1 = s3.Range("P3:p" & son3).Address(external:=True)
d2 = s3.Range("U3:U" & son3).Address(external:=True)
e1 = s4.Range("P3:p" & son4).Address(external:=True)
e2 = s4.Range("U3:U" & son4).Address(external:=True)

For i = 3 To 530
If wf.CountA(s5.Cells(i, "C").Resize(1, 1)) > 0 Then
b1 = s5.Cells(i, "C").Resize(1, 1).Address

s5.Cells(i, 11) = Evaluate("=SUM(SUMIF(" & a1 & "," & b1 & "," & a2 & "))")
s5.Cells(i, 13) = Evaluate("=SUM(SUMIF(" & c1 & "," & b1 & "," & c2 & "))")
s5.Cells(i, 15) = Evaluate("=SUM(SUMIF(" & d1 & "," & b1 & "," & d2 & "))")
s5.Cells(i, 17) = Evaluate("=SUM(SUMIF(" & e1 & "," & b1 & "," & e2 & "))")

End If
Next

With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
.EnableEvents = True
End With

End Sub
 
Katılım
11 Temmuz 2024
Mesajlar
268
Excel Vers. ve Dili
Excel 2021 Türkçe
Merhaba, şu şekilde dener misiniz;

Kod:
Sub MizanTopla()
    Dim aktifSayfa As Worksheet
    Set aktifSayfa = ActiveSheet
    
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    Application.EnableEvents = False
    
    Set s1 = Sheets("MİZAN1")
    Set s2 = Sheets("MİZAN2")
    Set s3 = Sheets("MİZAN3")
    Set s4 = Sheets("MİZAN4")
    Set s5 = Sheets("ANAMİZAN")
    Set wf = WorksheetFunction
    
    son1 = s1.Cells(Rows.Count, 1).End(xlUp).Row
    son2 = s2.Cells(Rows.Count, 1).End(xlUp).Row
    son3 = s3.Cells(Rows.Count, 1).End(xlUp).Row
    son4 = s4.Cells(Rows.Count, 1).End(xlUp).Row
    son5 = s5.Cells(Rows.Count, 1).End(xlUp).Row
    
    s5.Range("K3:K1000").ClearContents
    s5.Range("M3:M1000").ClearContents
    s5.Range("O3:O1000").ClearContents
    s5.Range("Q3:Q1000").ClearContents
    s5.Range("D3:R1000").NumberFormat = "#,##0.00"
    
    a1 = s1.Range("P3:P" & son1).Address(ReferenceStyle:=xlA1, external:=True)
    a2 = s1.Range("U3:U" & son1).Address(ReferenceStyle:=xlA1, external:=True)
    c1 = s2.Range("P3:P" & son2).Address(ReferenceStyle:=xlA1, external:=True)
    c2 = s2.Range("U3:U" & son2).Address(ReferenceStyle:=xlA1, external:=True)
    d1 = s3.Range("P3:P" & son3).Address(ReferenceStyle:=xlA1, external:=True)
    d2 = s3.Range("U3:U" & son3).Address(ReferenceStyle:=xlA1, external:=True)
    e1 = s4.Range("P3:P" & son4).Address(ReferenceStyle:=xlA1, external:=True)
    e2 = s4.Range("U3:U" & son4).Address(ReferenceStyle:=xlA1, external:=True)
    
    For i = 3 To 530
        If wf.CountA(s5.Cells(i, "C").Resize(1, 1)) > 0 Then
            b1 = s5.Cells(i, "C").Resize(1, 1).Address
            s5.Cells(i, 11) = Evaluate("=SUM(SUMIF(" & a1 & "," & b1 & "," & a2 & "))")
            s5.Cells(i, 13) = Evaluate("=SUM(SUMIF(" & c1 & "," & b1 & "," & c2 & "))")
            s5.Cells(i, 15) = Evaluate("=SUM(SUMIF(" & d1 & "," & b1 & "," & d2 & "))")
            s5.Cells(i, 17) = Evaluate("=SUM(SUMIF(" & e1 & "," & b1 & "," & e2 & "))")
        End If
    Next
    
    aktifSayfa.Activate
    
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
    Application.EnableEvents = True
    
    MsgBox "MİZAN özeti tamamlandı!", vbInformation
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,824
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Link faydalı olabilir..

 

dengeceteris

Altın Üye
Katılım
21 Aralık 2019
Mesajlar
209
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
15-06-2025
Üstadlarım her ikinize de ayrı ayrı tşk ederim. Dosyalar işimi gördü. Ama garip bir durumla karşılaştım bu sefer. Sayfadaki butona makro atama yapıyorum çalışmıyor. Veriyi çekerken call MizanTopla() yazıyorum çalışmıyor. Ama VBA sayfasına girip ordan çalıştırırsam kod tepki veriyor. Halbu ki bir sürü bu şekilde kodlarım var hiç birinde sorun yokken bunun çalışmama sebebi ne olabilir.
 
Üst