LİSTEDEN AYLARA GÖRE RAPOR ALMAK.

Katılım
22 Ekim 2004
Mesajlar
178
Sayın Ersin bey,
Private Sub Worksheet_Activate()
bölümünde aşağıdaki kod var.Bu kodla bu sayfalarda veri alıyor.Etkisi olurmu?
Kod:
Private Sub Worksheet_Activate()
  Dim sayfa As String
  
  BAKİYE = ActiveSheet.Name
  For i = 9 To Worksheets.Count
If Worksheets(i).Name = sayfa Then GoTo devam
    Sheets(BAKİYE).Range("d" & i - 2) = Worksheets(i).Range("E11")
   Sheets(BAKİYE).Range("e" & i - 2) = Worksheets(i).Range("F11")
    
    
    Sheets(BAKİYE).Range("c" & i - 2) = Worksheets(i).Name
devam:
  Next

End Sub
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Alpay bey gerçekten tıkandım, sorun yaratacak bir kodlama değil çünkü, hani spesifik bir kodlama olsa uyum şu bu derdim...öteki kodlar ile bir ilişkisi olduğunu sanmıyorum...

Aklıma aşağıdaki linkteki sorun ile aynısı olabilir diye gelmişti
Yani 2. sütuna biryerden veri taşıtıyorsanız bunun görüntüsü tarih gibi olabilir ama aslında excel onu text olarak algılar... Ama başka dosyaya aktardığımda çalışıyor diyorsunuz?? yinede bir incelermisiniz iyice..
http://www.excel.web.tr/viewtopic.php?t=2407

Yada dosya özel değilse buraya tamamını ekleyin veya buraya sığmayacak kadar büyükse mailime yollayın oradan bakayım..
 
Katılım
4 Aralık 2004
Mesajlar
129
Arkadaşlar Ã?rnek Kitapdaki tarihleri aylara göre aktardık peki 2 sayı arasını aynı yöntemle aktarma imkanı varmı, mesala; sıra no daki 8 ile 33 arası Bilgileri de taşıyabilirmiyiz..
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Alpay bey (mailime) gönderdiğiniz dosyayı inceledim..Excel için çok büyük bir işe başlamışsınız. Tamamen bittiğinde isimleri, dataları vs'yi kaldırarak,değiştirerek örnek çalışmalar bölümüne eklerseniz öğrenmeye çalışan arkadaşlara faydalı olur.

Hatalar genel yapılan hatalar olduğu için cevabımı burda yazmayı uygun gördüm izninizle.

Birincisi proje data ile dolduğunda çok yavaşlayacağı için prosedür başlarında
Kod:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
eklemeniz ve prosedür sonundada end subdan önce
Kod:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
koymanızda fayda var. Bunlar prosedürün çalışması boyunca excel'in ekranı tazeleme ve hesap fonksiyonlarını kapatarak prosedürün daha hızlı çalışmasını sağlar.

İkincisi çalışmanıza yanlışlıkla eklediğiniz boş modül ve prosedürleri kaldırın.. Yaklaşık 15 tane kaldırılacak modül var.. (Sizde büyük modül görmedim ama) modüllerin büyüklüğü konusunda kesin bir kural olmasada birbiri ile ilişkili prosedürleri aynı modülde tutmakta ve modül büyüklüğünü 10-15 k'da tutmakta fayda var..


Üçüncüsü sizin aqua sayfanızda hataya yol açan şey, yukarıda açıkladığım private, public vs şeklinde değişkenlerin etki alanlarının programa bildirilmesi hususu. Sizin bir prosedürde tespit ettiğiniz "arananay " değişkenini aynı modül içinde başka bir prosedürde kullanmak istediğiniz için private ile, başka modülde kullanmak isteseydiniz public ile tanıtmanız gerekir.


Netice olarak bahsi geçen modüle aşağıdaki kodu aynen kopyalarsanız o prosedürler düzgün çalışır(en azından bende çalışıyor)

Kod:
Private arananay

Private Sub ComboBox1_Change()
arananay = ComboBox1.Value
End Sub

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Worksheets("aqua").Range("rapor").ClearContents
j = 14
t = 14
Do While Cells(j, 1) <> ""
bak = Choose(Month(Cells(j, 2)), "OCAK", "ÞUBAT", "MART", "NİSAN", "MAYIS", "HAZİRAN", "TEMMUZ", "AÐUSTOS", "EYLÜL", "EKİM", "KASIM", "ARALIK")
If bak = arananay Then
    For k = 1 To 7
    Cells(t, k + 11) = Cells(j, k)
    Next k
    t = t + 1
    End If
    j = j + 1
    Loop
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "MENÜ!AA1:AA20"
End Sub

Ã?teki sayfada (malt sayfası) sorduğunuz soruyu hafızam beni yine yanıltmıyorsa bir başka başlık olarak açmıştınız. Yeterince inceleyemediğim için kodu yazamayacağım ama Leventm beyin o uygulamasını incelerseniz Filter yapmak için bazı sütunları hem kaynağında, hemde yazdığı yerde birleştiriyor. Yani sizdede C,D,ve E sütunlarını & ile örneğin J sütununda birleştirmek filter yaptıktan sonrada hedef yerde M:N: ve O sütunlarını örneğin L sütununda aynı şekilde birleştirmeniz daha sonrada toplamanızı istediğiniz her sütun için for c=2 döngüsünün içine aynı formülü uyarlamanız gerekir.

Umarım yardımcı olur.


hakanbolat'ın sorusuna gelince yukarıdaki kodu aşağıdaki gibi değiştirince (hiç çalıştırmadım ama) olması gerekir. ilksat ve sonsat değişkenlerini istediğiniz yerden alırsınız.. (public ve private vs unutmadan)


Kod:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Worksheets("aqua").Range("rapor").ClearContents
ilksat = 8
sondat = 33

j = 14
t = 14
Do While Cells(j, 1) <> ""
If Cells(j, 1) >= 8 Or Cells(j, 2) <= 33 Then
    For k = 1 To 7
    Cells(t, k + 11) = Cells(j, k)
    Next k
    t = t + 1
    End If
    j = j + 1
    Loop
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Katılım
22 Ekim 2004
Mesajlar
178
Sayın danersin beye teşekkürler.Sorun giderildi.Problemsiz çalışıyor.
Sağolun.
 
Katılım
4 Aralık 2004
Mesajlar
129
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Worksheets("aqua").Range("rapor").ClearContents
j = 14
t = 14
Do While Cells(j, 1) <> ""
bak = "tahsil"
If bak = arananay Then
For k = 1 To 7
Cells(t, k + 11) = Cells(j, k)
Next k
t = t + 1
End If
j = j + 1
Loop
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Burda Ayların Yerine Ben 3.Sütünda Bulunan işlemleri aktarmak istiyorum yani "tahsil" yazan bütün satırları aktarsın diyorum birkaç deneme yaptım olmadı yardımcı olursanız sevinirim..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sorunuzun daha iyi anlaşılması için bir dosya eklermisiniz.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosya eklemede bir sorun görünmüyor,işlem sırasındamı hata yaptınız acaba. Tekrar deneyin.
 
Katılım
4 Aralık 2004
Mesajlar
129
Listeden İki Tarih arası rapor alamıyorum.. Kod aşağıdaki gibi..

(If Cells(j, 1) >= basgun Or Cells(j, 2) <= songun Then
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
cells(j,1) in yanındaki 1, 1. sütunu
cells(j,2)'nin yanındaki değer 2. sütunu refere ediyor.
Yanyana iki sütundada tarih var ise yaptığınız doğru ama öyle değilse her ikisinede tarih hangi sütunda ise o sütunun indisini yazmalısınız.
 
Üst