Formüllerin vba ile hızlandırılması

Katılım
9 Aralık 2004
Mesajlar
62
Excel Vers. ve Dili
excel 2003
Arkadaşlar ben bütçe hesapları ile ilgili üç sayfalık bir çalışma hazırladım.Bu sayfa sayısı ve veri sayısı aslında bayağı fazla olacak ama buraya ekleyebilmek için kısa tuttum.Ekteki çalışmada veri sayfasında 12000 satıra yakın veri olacak.Ama burada kısıtlı tuttum.Benim sorum şu sorgu sayfasındaki pencereden seçim yaptığımda veri fazla olduğu için formülün hesaplanıp tabloya işlenmesi bayağı uzun sürüyor.Bu işlem vba da daha hızlı olarak yapılabilirmi yapılabilirse ekteki örnek dosya üzerinde yardımcı olabilirseniz sevinirim.
 

Ekli dosyalar

Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
"SORGU" sayfasındaki "Açılan Kutu" (Forms) yerine "ComboBox" (Denetim) nesnesi kullanıldı.

Çalışma kitabı açılınca ve "SORGU" çalışma sayfasına geçildiğinde; otomatik olarak ComboBox'a yeni bilgi yüklemeleri yapılır.

ComboBox nesnesindeki seçim değiştiğinde de; istenen veriler ilgili sayfaya çekilir.

Standart bir modul sayfası ilave edildi aşağıdaki kodlar buraya ilave edildi.

Kod:
Sub Combo_Doldur()
    Dim wksSrg As Worksheet
    Dim cmb As ComboBox
    Dim i As Integer
    
    Set wksSrg = Sheets("SORGU")
    
    Set cmb = wksSrg.OLEObjects("ComboBox1").Object
    
    With cmb
        i = .ListIndex
        .Clear
        .List = Sheets("TERTİP").Range("B2:B100").Value
        .ListIndex = i
    End With
    
    Set wksSrg = Nothing
    Set cmb = Nothing
    
End Sub
'------------------
Sub Auto_Open()
    Call Combo_Doldur
End Sub
"SORGU" adlı sayfanın kod modülüne aşağıdaki kodlar ilave edildi.

Kod:
Private Sub ComboBox1_Change()
    Dim rngBul As Range
    Dim sAdr As String
    Dim iStr As Integer
    Dim iBul As Integer
    
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
    End With
    
    With Sheets("VERİ")
        
        Set rngBul = .Columns(1).Find(ComboBox1, lookat:=xlWhole)
    
        If Not rngBul Is Nothing Then
        
            Range("B3:G" & Cells(65536, "G").End(xlUp).Row).ClearContents
            
            iStr = 3
            sAdr = rngBul.Address
            iBul = rngBul.Row
        
            Do
                .Range("B" & iBul & ":G" & iBul).Copy Range("B" & iStr & ":G" & iStr)
            
                Set rngBul = .Columns(1).FindNext(rngBul)
            
                iStr = iStr + 1: iBul = rngBul.Row
            
            Loop Until rngBul Is Nothing Or sAdr = rngBul.Address
        End If
    
    End With
    
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
    End With
    
    
    Set rngBul = Nothing
    
End Sub
'---------------------
Private Sub Worksheet_Activate()
    Call Combo_Doldur
End Sub
Örnek dosyayı da inceleyebilirsiniz.
 

Ekli dosyalar

Katılım
9 Aralık 2004
Mesajlar
62
Excel Vers. ve Dili
excel 2003
Ferhat bey yardımınız için çok teşekkür ederim.istediğim tamda buydu.Yaptığım çalışma tamamlanınca İnşallah buradan sizlerle payaşacağım.
 
Katılım
9 Aralık 2004
Mesajlar
62
Excel Vers. ve Dili
excel 2003
Combobox ile veri aktarımı

Arkadaşlar ben hazırladığım bir çalışmaya combobox aracılığı ile veri transferi yapmaya çalışıyorum.Sağolsun Ferhat Bey bayağı yardımcı oldu.Ama takıldığım bir yer var sormak istiyorum.Ektede görüleceği üzere combobox verileri değiştikçe yan sütunlara 3.satırdan itibaren aktarım yapılıyor.Buraya kadar herşey tamam.Ben ikinci bir combobox ekleyerek 25.satırdan itibaren de buraya aynı kaynaktan değişik verileri aktarmak istiyorum.
Yani 1.comboboxta "03 2 1 01 - Kırtasiye Alımları" seçili iken 2.comboboxta "03 2 5 01 - Giyecek Alımları" seçilecek ve bunların karşılığındaki değerler ilgili sütunlara aktarılacak.Ama yapamadım bu konuda yardımlarınızı bekliyorum.Şimdiden teşekkürler.
 

Ekli dosyalar

Son düzenleme:
Üst