Diziye (array) atanmış çalışma sayfaları combobox ta olmasın?

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Sub DegiskenAl()
........................
ckBU_Klc_SfAd = Array(ckBU_sfSAT.Name, ckBU_sfALS.Name, ckBU_sfTNM.Name, ckBU_sfTSB.Name, _
                      ckBU_sfAYL.Name, ckBU_sfYIL.Name, ckBU_sfDVR.Name)  'daima bu kitapta kalacak sayfa adları
Kod:
Private Sub UserForm_Initialize()                                                                '||
Mdl_00_Acls.DegiskenAl                                                   'genel değişkenleri oku '||
................
For sf_ind = 1 To ckBU_ss: uf_isl.cb_syf.AddItem Sheets(sf_ind).Name: Next  'Çalışma Sayfaları '||
cb_syf.Value = Sheets(ckBU_ss).Name                                         'son sayfa         '||
Açılışta Public ile tanımlamış olduğum ckBU_Klc_SfAd dizisindeki çalışma sayfalarının comboboxta yer almaması için nasıl bir yöntemi uygulamalıyım
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

1). Yeni bir Çalışma kitabı açınız.
2). 4 adet Çalışma Sayfası olsun. (Adları : Sayfa1, Sayfa2, Sayfa3 ve Sayfa4)
3). VBA Editörüne geçin (Alt+F11)
4). Projenize bir Userform ekleyin.
5). Userformun üzerine bir adet Combobox nesnesi ilave edin.
6). Userform'un kod sayfasına aşağıdaki kodları kopyalayın. Bu kodlarda görüleceği üzere Sayfa1 ve Sayfa3 görüntülenmesini istemediğimiz sayfalardır.

Kod:
Private Sub UserForm_Initialize()
Dim arrSh()
Dim i%, j%, x%
arrSh = Array("Sayfa1", "Sayfa3")
For i = 1 To Sheets.Count
    For j = 0 To UBound(arrSh)
        If Sheets(i).Name = arrSh(j) Then: x = x + 1
    Next j
    If x = 0 Then
       ComboBox1.AddItem Sheets(i).Name
    End If
    x = 0
Next i
End Sub
7). Userform'u çalıştırdığınızda Combobox'a sadece Sayfa2 ve Sayfa4 isimli sheet'lerin yüklendiğini görmelisiniz.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam alakanıza teşekkür ederim umarım kendime uyarlayabilirim...
örneğiniz çok güzel
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Set s1 = Sheets("Sayfa1"): Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3"): Set s2 = Sheets("Sayfa4")
Set s2 = Sheets("Sayfa5")
arrSh = Array(s1, s2, s3)
'arrSh = Array(s1.Name, s2.Name, s3.Name)
hocam sayfa adlarını set edince kafası karışıyor nasıl olmalı.....
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Başında Apostrof olan satırı aktif hale getirin. Diğer satır olmaz. Yani şu komut satırını kullanın

arrSh = Array(s1.Name, s2.Name, s3.Name)
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam o şekilde kullanıyorum
Kod:
Private Sub UserForm_Initialize()
Dim s1 As Worksheet: Dim s2 As Worksheet: Dim s3 As Worksheet
Dim s4 As Worksheet: Dim s5 As Worksheet
Dim arrSh()
Dim i%, j%, x%
Set s1 = Sheets("Sayfa1"): Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3"): Set s2 = Sheets("Sayfa4")
Set s2 = Sheets("Sayfa5")


[B][color="Red"] arrSh = Array(s1.Name, s2.Name, s3.Name) [/color][/B]

[B][color="Green"] 'arrSh = Array("Sayfa1", "Sayfa2", "Sayfa3") [/color][/B]
'MsgBox s1.Name
For i = 1 To Sheets.Count
    For j = 0 To UBound(arrSh)
        If Sheets(i).Name = arrSh(j) Then: x = x + 1
    Next j
        If x = 0 Then
           ComboBox1.AddItem Sheets(i).Name
        End If
    x = 0
Next i
End Sub
Kırmızı satır Aktif iken yani s1.Name şeklindeki yazım
çalışma kitabında sayfaların sırası sayfa1,sayfa2,sayfa4,sayfa5,sayfa3 iken
comboboxa sayfa2 sayfa 4 geliyor

Yeşil satır Aktif iken yani "Sayfa1" şeklindeki yazım
çalışma kitabında sayfaların sırası sayfa1,sayfa2,sayfa4,sayfa5,sayfa3 iken
comboboxa sayfa4 sayfa 5 geliyor

ve istenilen oluyor.......
bunu nasıl aşarım
az önce yanlış yazmışım bakan oldu ise
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ama, Sn Hsayar, Set ettiğiniz değişkenlere bir bakarmısınız...

Kod:
Set s1 = Sheets("Sayfa1"): Set [B][COLOR=red]s2[/COLOR][/B] = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3"): Set [COLOR=red][B]s2[/B][/COLOR] = Sheets("Sayfa4")
Set [B][COLOR=red]s2[/COLOR][/B] = Sheets("Sayfa5")



3 tane s2 adlı değişken set etmişsiniz ve sonuç olarak s2 sadece Sheets("Sayfa5") i gösteriyor. Ne amaçla bunu yaptığınızı bilmiyorum ama önce set ettiğiniz değişkenleri gözden geçiriniz. Muhtemelen şöyle olacak

Kod:
Set s1 = Sheets("Sayfa1"): Set [B][COLOR=red]s2[/COLOR][/B] = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3"): Set [COLOR=red][B]s4[/B][/COLOR] = Sheets("Sayfa4")
Set [B][COLOR=red]s5[/COLOR][/B] = Sheets("Sayfa5")
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
:)
Kopyala çoğalt manatığı
Ama göz ucuyla dizideki bomabaya bakarsan böyle olur kusura bakmayın özür dilerim
 
Üst