KODUN ÇALIŞMASINI HIZLANDIRMAK

Katılım
8 Ekim 2004
Mesajlar
317
Excel Vers. ve Dili
EXCEL 2003 TÜRKÇE
KODUN ÇALIÞMASINI HIZLANDIRMAK

Ã?ncelikle Tüm Form üyelerinin geçmiş Kurban Bayramını kutlarım

Aşağıdaki kod Sayfa isimlerinin ComboBoxta listelenmesini sağlıyor.Aynı zamandada belirtilen sayfaların listelenmesini engelliyor.Bunu yaparken her çalıştığında tüm sayfa isimlerini gözden geçirip sıralama yapıyor. Sanıyorumki bu gözden geçirme ve sıralama işlemi kodun çalışmasını yavaşlatıyor. Açılacak olan her sayfa bir müşteriye ait cari kart olarak düşünüldüğünden 200 - 300 sayfa açılması olasılığı var. Bu durum karşısında sanıyorum bu kod çok daha yavaş çalışacaktır. Bu kodu karşılayacak daha pratik ve daha hızlı çalışacak bir kod yazılamazmı. Eğer isterseniz örnek çalışmamı gönderebilirim.

Yardımlarınıza şimdiden çok teşekkür ederim.

KOD:

Kod:
Private Sub OptionButton1_Click()
 Dim i As Integer
    Dim j As Integer
    Label1.Caption = ""
    If Worksheets.Count = 1 Then Exit Sub
        For i = 1 To Worksheets.Count
        Sheets(i).Name = LCase(Sheets(i).Name)
            For j = i + 1 To Worksheets.Count
                If LCase(Worksheets(j).Name) < LCase(Worksheets(i).Name) Then
                    Worksheets(j).Move Before:=Worksheets(i)
                End If
            Next j
        Next i
    For i = 1 To Sheets.Count
        If LCase(Sheets(i).Name) <> LCase("ana sayfa") _
            And LCase(Sheets(i).Name) <> LCase("toplam") _
            And LCase(Sheets(i).Name) <> LCase("stok") _
            And LCase(Sheets(i).Name) <> LCase("kasa") _
            And LCase(Sheets(i).Name) <> LCase("fatura") Then
            ComboBox1.AddItem Sheets(i).Name
            ComboBox2.AddItem Sheets(i).Name
        End If
                 
    Next
  Sheets("ana sayfa").Move Before:=Sheets(2)
End Sub
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Aşama aşama bir cevap olacak

1-
Kod:
Private Sub OptionButton1_Click()
Application.ScreenUpdating = False
        'diğer kodlarınız
Application.ScreenUpdating = True
End Sub
kullanmanız faydalı.

2- Müşteriye ait kartları oluştururken doğrudan en sona oluşturabilirsiniz.
Kod:
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
dolayısı ile listeyi doldururken o isimli sayfalarınızı sıralamaya ve sınamanıza gerek kalmaz.. 6 (anasayfa,toplam,stok,kasa ve faturadan sonra) başlatarak

Kod:
For i = 6 To Sheets.Count
ComboBox1.AddItem Sheets(i).Name
 ComboBox2.AddItem Sheets(i).Name
next i
Bu satıra gerek varmı? bir olması mümkünmü?
If Worksheets.Count = 1 Then Exit Sub

Umarım doğru anlamış ve anlatmışımdır.
 
Üst