Çalışma Sayfalarının Listesinin Oluşturmak

Katılım
13 Ağustos 2013
Mesajlar
11
Excel Vers. ve Dili
2010 İngilizce
Altın Üyelik Bitiş Tarihi
22.03.2019
Merhaba Arkadaşlar;

Herhangi bir çalışma kitabındaki çalışma sayfalarının listesini tıkladığım hücreye aktaracak bir makroya ihtiyacım var.

Daha doğrusu eski bilgisayarımda böyle bir makrom vardı ancak iş değişikliği nedeniyle apar topar yedekleri alırken personal.xlsb'nin yedeğini almayı atlamışım :(

Şimdi yeni bilgisayarımda bu makroyu tanımlamak için araştırıyorum ancak bir türlü istediğim hale getiremedim.

Örneğin aşağıdaki gibi bir kod buldum.

Kod:
Sub ListSheetNames()
    Dim R As Range
    Dim WS As Worksheet
    Set R = ActiveCell
    For Each WS In ThisWorkbook.Worksheets
        R.Value = WS.Name
        Set R = R(2, 1)
    Next WS
End Sub
Bu kod aktif dosyada gayet güzel çalışıyor, ancak şöyle bir sıkıntım var. Tüm workbook'larda çalışması için personal.xlsb'ye kaydediyorum. Daha sonra aktif workbook'ta tıkladığım zaman personal.xlsb'deki worksheet'lerin listesini getiriyor, haliyle her dosya için modül ekleyerek kod girmek gerekiyor. Benim istediğim ise o an önümde açık olan workbook'un herhangi bir yerine tıklayarak liste oluşturmak.

Bu konuda paylaşmak için elinde kod olan veya paylaştığım kodu aktif workbook için çalışacak hale getirecek şekilde düzenleyebilecek arkadaşlar yardımcı olabilirlerse minnettar olurum.

Desteğiniz için teşekkür ederim.

İyi çalışmalar...
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Kod:
For Each WS In ActiveWorkbook.Worksheets
olarak deneyin.
 
Katılım
13 Ağustos 2013
Mesajlar
11
Excel Vers. ve Dili
2010 İngilizce
Altın Üyelik Bitiş Tarihi
22.03.2019
Örneğin aşağıdaki gibi bir kod buldum.

Kod:
Sub ListSheetNames()
    Dim R As Range
    Dim WS As Worksheet
    Set R = ActiveCell
    For Each WS In ThisWorkbook.Worksheets
        R.Value = WS.Name
        Set R = R(2, 1)
    Next WS
End Sub
Kodda yer alan "For Each WS In ThisWorkbook.Worksheets" satırını "For Each WS In ActiveWorkbook.Worksheets" olarak düzeltince istediğim gibi oldu, faydalanmak isteyen arkadaşlar için kodun tamamı aşağıdaki gibidir:

Kod:
Sub ListSheetNames()
    Dim R As Range
    Dim WS As Worksheet
    Set R = ActiveCell
    For Each WS In ActiveWorkbook.Worksheets
        R.Value = WS.Name
        Set R = R(2, 1)
    Next WS
End Sub
 
Katılım
13 Ağustos 2013
Mesajlar
11
Excel Vers. ve Dili
2010 İngilizce
Altın Üyelik Bitiş Tarihi
22.03.2019
Kod:
For Each WS In ActiveWorkbook.Worksheets
olarak deneyin.
Teşekkür ederim Hocam, ben de aynı şekilde çözüm buldum ancak aynı anda yazdık :)

Böyle kullanışlı oldu.
 
Üst