• DİKKAT

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

Makro komutları

  • Konbuyu başlatan Konbuyu başlatan besen
  • Başlangıç tarihi Başlangıç tarihi

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
822
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021
İngilizce
Merhaba iki tane ayrı ayrı makro komutu var.
Birinci komut: tüm SQL sorgularını güncelliyorum.

Sub Refresh()
'
' Refresh Macro
'
' Keyboard Shortcut: Ctrl+r
'
ActiveWorkbook.RefreshAll
End Sub

Bu komutu tek bir sayfa için yapmak istersem nasıl düzeltmem gerekir.

İkinci komut: Sayfadan çıkınca otomatik gizleniyor.

Private Sub Worksheet_Deactivate()
Me.Visible = xlHidden
End Sub

Onlarca sayfa var. Açık kalmasını istediklerime gidip tek tek bu makroyu ya siliyor ya da tırnak içine alıp pasif yapıyorum, sonra tekrar düzeltiyorum.
Bunu tek bir komutla gizle göster yapabilir miyiz.

Teşekkür ederim.
 
Aktif Sayfayı Güncelleme Makrosu
Kod:
Sub RefreshCurrentSheet()
    Dim pc As PivotTable
    Dim lo As ListObject

    For Each pc In ActiveSheet.PivotTables
        pc.RefreshTable
    Next pc

    For Each lo In ActiveSheet.ListObjects
        If lo.SourceType = xlSrcExternal Then
            lo.QueryTable.Refresh BackgroundQuery:=False
        End If
    Next lo
End Sub

otomatik gizleme makronuz
Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim Istisnalar As Variant
    Dim SayfaAdi As Variant
    Dim Gizle As Boolean   
    
    Istisnalar = Array("AnaSayfa", "Data", "Dashboard")
    Gizle = True

    For Each SayfaAdi In Istisnalar
        If Sh.Name = SayfaAdi Then
            Gizle = False
            Exit For
        End If
    Next SayfaAdi

    If Gizle Then Sh.Visible = xlSheetHidden
End Sub

tüm sayfalar görünür olsun dersenizde
Kod:
Sub TumSayfalariGoster()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Visible = xlSheetVisible
    Next ws
End Sub
 
Aktif Sayfayı Güncelleme Makrosu
Kod:
Sub RefreshCurrentSheet()
    Dim pc As PivotTable
    Dim lo As ListObject

    For Each pc In ActiveSheet.PivotTables
        pc.RefreshTable
    Next pc

    For Each lo In ActiveSheet.ListObjects
        If lo.SourceType = xlSrcExternal Then
            lo.QueryTable.Refresh BackgroundQuery:=False
        End If
    Next lo
End Sub

otomatik gizleme makronuz
Kod:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim Istisnalar As Variant
    Dim SayfaAdi As Variant
    Dim Gizle As Boolean  
   
    Istisnalar = Array("AnaSayfa", "Data", "Dashboard")
    Gizle = True

    For Each SayfaAdi In Istisnalar
        If Sh.Name = SayfaAdi Then
            Gizle = False
            Exit For
        End If
    Next SayfaAdi

    If Gizle Then Sh.Visible = xlSheetHidden
End Sub

tüm sayfalar görünür olsun dersenizde
Kod:
Sub TumSayfalariGoster()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Visible = xlSheetVisible
    Next ws
End Sub


Teşekkür ederim, deneyeceğim. Aktif sayfayı değil de aktif sayfadayken benim istediğim sayfayı güncellesin istiyorum.
 
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Dim Istisnalar As Variant
Dim SayfaAdi As Variant
Dim Gizle As Boolean

Istisnalar = Array("AnaSayfa", "Data", "Dashboard")
Gizle = True

For Each SayfaAdi In Istisnalar
If Sh.Name = SayfaAdi Then
Gizle = False
Exit For
End If
Next SayfaAdi

If Gizle Then Sh.Visible = xlSheetHidden
End Sub


Bu makro alt F8 yapınca çıkmıyor.
 
İstediklerimi ChatGPT’ye yazdım.
Makrolar çalıştı.

sayfaları gizleme


Sub TumSayfalariGizle()



Dim ws As Worksheet



Application.ScreenUpdating = False



For Each ws In ThisWorkbook.Worksheets

If ws.Name <> "MENU" Then

ws.Visible = xlSheetVeryHidden

End If

Next ws



Application.ScreenUpdating = True



End Sub

Aktif sayfada başka bir sayfayı güncelleme


Sub RefreshMuhasebeSheet()

Dim ws As Worksheet
Dim pc As PivotTable
Dim lo As ListObject

Set ws = ThisWorkbook.Worksheets("muhasebe")

'Pivot tabloları yenile
For Each pc In ws.PivotTables
pc.RefreshTable
Next pc

'Tabloları yenile
For Each lo In ws.ListObjects
On Error Resume Next
If Not lo.QueryTable Is Nothing Then
lo.QueryTable.Refresh BackgroundQuery:=False
End If
On Error GoTo 0
Next lo

End Sub
 
Geri
Üst