Seçili Olmayan Sayfaları diziye almak

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Merhabalar

Aşağıdaki kod, seçili olan sayfaları, bir array'a atıp, hepsini birlikte yeni bir kitaba kopyalar

Kod:
Sub Toplu_Sheet_Kopyala()
Dim sh As Worksheet
Dim i%, y%
Dim arrsh()
For Each sh In ActiveWindow.SelectedSheets
    ReDim Preserve arrsh(y)
    arrsh(y) = sh.Name
    y = y + 1
Next
Sheets(arrsh).Copy
End Sub
sayın fpcnin bu kodları ile seçili sayfaları diziye alıp kopyalayabiliyoruz.......
peki seçili olmayan sayfaları diziye almak mümkünmüdür?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

Yine aynı mantık üzerinden devam edersek, aşağıdaki kod seçili olmayan sayfaları listeler ...

Kod:
Option Explicit
Sub Secili_Olmayan_Sayfalar()
Dim sh As Worksheet
Dim i%, y%, x%
Dim arrsh(), arrShX()
Dim sayfalar As String
For Each sh In ActiveWindow.SelectedSheets
    ReDim Preserve arrsh(y)
    arrsh(y) = sh.Name
    y = y + 1
Next
y = 0
For Each sh In ThisWorkbook.Sheets
    For i = 0 To UBound(arrsh)
        If sh.Name = arrsh(i) Then: x = x + 1
    Next i
    If x = 0 Then
       ReDim Preserve arrShX(y)
       arrShX(y) = sh.Name
       y = y + 1
    End If
    x = 0
Next
[COLOR=green]'------------- MESAJ OLUŞTURMAK İÇİN -----------------[/COLOR]
For i = 0 To UBound(arrShX)
    sayfalar = arrShX(i) & vbCrLf & sayfalar
Next i
MsgBox sayfalar
[COLOR=green]'------------------------------------------------------[/COLOR]
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
teşekkür ederim hocam
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam bu kodların eklentide çalışması için ne yapmak lazım, çalışma kitabından çalışıyor eklnetiden çalışmıyor :(
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Eklentide (xla) tabiki çalışmaz. Kodlara dikkat ederseniz, Thisworkbook gibi bir nesne kullanıyoruz. Thisworkbook da, kodların yazılı olduğu kitap ve bu kitap da, xla olduğuna göre herhangi bir sheet bulması mümkün olmayacaktır.

Thisworkbook yerine; ya ActiveWorkbook yada prosedürü çalıştıracak şekilde bir Workbook parametresi gösterilmeli ....
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hocam gözüm en üstteki
ActiveWindow.SelectedSheets
Satırına gitti kusura bakmayın

Kod:
Option Explicit
Sub Secili_Olmayan_Sayfalar()
Dim sh As Worksheet
Dim i%, y%, x%
Dim arrsh(), arrShX()
Dim sayfalar As String
For Each sh In ActiveWindow.SelectedSheets
    ReDim Preserve arrsh(y)
    arrsh(y) = sh.Name
    y = y + 1
Next
y = 0
For Each sh In [color="green"][B]ActiveWorkbook.Sheets[/B][/color] [color="red"][B]'ThisWorkbook.Sheets[/B][/color]
    For i = 0 To UBound(arrsh)
        If sh.Name = arrsh(i) Then: x = x + 1
    Next i
    If x = 0 Then
       ReDim Preserve arrShX(y)
       arrShX(y) = sh.Name
       y = y + 1
    End If
    x = 0
Next
'------------- MESAJ OLUŞTURMAK İÇİN -----------------
For i = 0 To UBound(arrShX)
    sayfalar = arrShX(i) & vbCrLf & sayfalar
Next i
MsgBox sayfalar
'------------------------------------------------------
End Sub
oldu,
Artık cahillihimize verin daha yeni yeni yamaklıktan çıraklığa geçiyoruz.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hocam gözüm en üstteki
ActiveWindow.SelectedSheets
Satırına gitti kusura bakmayın

Kod:
Option Explicit
Sub Secili_Olmayan_Sayfalar()
Dim sh As Worksheet
Dim i%, y%, x%
Dim arrsh(), arrShX()
Dim sayfalar As String
For Each sh In ActiveWindow.SelectedSheets
    ReDim Preserve arrsh(y)
    arrsh(y) = sh.Name
    y = y + 1
Next
y = 0
For Each sh In [COLOR=green][B]ActiveWorkbook.Sheets[/B][/COLOR] [COLOR=red][B]'ThisWorkbook.Sheets[/B][/COLOR]
    For i = 0 To UBound(arrsh)
        If sh.Name = arrsh(i) Then: x = x + 1
    Next i
    If x = 0 Then
       ReDim Preserve arrShX(y)
       arrShX(y) = sh.Name
       y = y + 1
    End If
    x = 0
Next
'------------- MESAJ OLUŞTURMAK İÇİN -----------------
For i = 0 To UBound(arrShX)
    sayfalar = arrShX(i) & vbCrLf & sayfalar
Next i
MsgBox sayfalar
'------------------------------------------------------
End Sub
oldu,
Artık cahillihimize verin daha yeni yeni yamaklıktan çıraklığa geçiyoruz.
sn fpc hocam seçili olmayanları listeler iken kitabımızdaki grafik sayfalarınıda dahil etmek mümkün olur mu?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Aslında çözüm basitmiş ama şimdi şu sorun var;
Çalışma kitabında Çalışma Sayfası, Grafik Sayfası, Uluslararası Makro Sayfası, İletişim Kutusu sayfası buluyorsa sh nin değişken tipi ne olmalıdır?

Kod:
[B][COLOR=Red]'Option Explicit[/COLOR][/B]
Sub Secili_Olmayan_Sayfalar()
On Error Resume Next
[B][COLOR=Red]'Dim sh As Sheets[/COLOR][/B]
Dim i%, y%, x%
Dim arrsh(), arrShX()
Dim sayfalar As String
For Each sh In ActiveWindow.SelectedSheets
    ReDim Preserve arrsh(y)
    arrsh(y) = sh.Name
    y = y + 1
Next
y = 0
For Each sh In ActiveWorkbook.Sheets   '.Charts  '.Worksheets 'ThisWorkbook.Sheets
    For i = 0 To UBound(arrsh)
        If sh.Name = arrsh(i) Then: x = x + 1
    Next i
    If x = 0 Then
       ReDim Preserve arrShX(y)
       arrShX(y) = sh.Name
       y = y + 1
    End If
    x = 0
Next
'------------- MESAJ OLUŞTURMAK İÇİN -----------------
For i = 0 To UBound(arrShX)
    sayfalar = arrShX(i) & vbCrLf & sayfalar
Next i
MsgBox sayfalar
'------------------------------------------------------
End Sub
İletişim Kutusu1
 
Üst