kod kısaltma?

Katılım
9 Ocak 2007
Mesajlar
27
Excel Vers. ve Dili
2003 ingilizce
merhaba arkadaşlar;
sormak istediğim bir iki şey var,
33 adet textbox kullanıyorum ve bunların her biri için ayrı satırda kod yazıyorum. bu programın çalışmasında bi yavaşlatma yaparmı zira program baya bi yavaş çalışıyor.

aşağıdaki kodu nasıl kısalta bilirim. bi göz atarsanız sevinirim. teşekkürler.

Kod:
Private Sub CMDKAYDET_Click()
    Set S1 = Sheets("MALIYET")
    say = WorksheetFunction.CountIf(S1.[a:a], girdi1)
    If say > 0 Then
    SAT = S1.[a1:a65536].Find(girdi1).Row
    S1.Cells(SAT, 17) = GR1
    S1.Cells(SAT, 18) = GR2
    S1.Cells(SAT, 19) = GR3
    S1.Cells(SAT, 20) = GR4
    S1.Cells(SAT, 21) = GR5
    S1.Cells(SAT, 22) = GR6
    S1.Cells(SAT, 23) = GR7
    S1.Cells(SAT, 24) = GR8
    S1.Cells(SAT, 25) = GR9
    S1.Cells(SAT, 26) = MAK1
    S1.Cells(SAT, 27) = MAK2
    S1.Cells(SAT, 28) = MAK3
    S1.Cells(SAT, 29) = MAK4
    S1.Cells(SAT, 30) = MAK5
    S1.Cells(SAT, 31) = MAK6
    S1.Cells(SAT, 32) = MAK7
    S1.Cells(SAT, 33) = MAK8
    S1.Cells(SAT, 34) = MAK9
    S1.Cells(SAT, 35) = SN1
    S1.Cells(SAT, 36) = SN2
    S1.Cells(SAT, 37) = SN3
    S1.Cells(SAT, 38) = SN4
    S1.Cells(SAT, 39) = SN5
    S1.Cells(SAT, 40) = SN6
    S1.Cells(SAT, 41) = SN7
    S1.Cells(SAT, 42) = SN8
    S1.Cells(SAT, 43) = SN9
    S1.Cells(SAT, 44) = FYAN1
    S1.Cells(SAT, 45) = FYAN2
    S1.Cells(SAT, 46) = FYAN3
    S1.Cells(SAT, 47) = FYAN4
    S1.Cells(SAT, 48) = FYAN5
    S1.Cells(SAT, 49) = FYAN6
    S1.Cells(SAT, 50) = TOPLAM
    Exit Sub
    End If
    SONSAT = S1.[a65536].End(3).Row + 1
    S1.Cells(SONSAT, 17) = GR1
    S1.Cells(SONSAT, 18) = GR2
    S1.Cells(SONSAT, 19) = GR3
    S1.Cells(SONSAT, 20) = GR4
    S1.Cells(SONSAT, 21) = GR5
    S1.Cells(SONSAT, 22) = GR6
    S1.Cells(SONSAT, 23) = GR7
    S1.Cells(SONSAT, 24) = GR8
    S1.Cells(SONSAT, 25) = GR9
    S1.Cells(SONSAT, 26) = MAK1
    S1.Cells(SONSAT, 27) = MAK2
    S1.Cells(SONSAT, 28) = MAK3
    S1.Cells(SONSAT, 29) = MAK4
    S1.Cells(SONSAT, 30) = MAK5
    S1.Cells(SONSAT, 31) = MAK6
    S1.Cells(SONSAT, 32) = MAK7
    S1.Cells(SONSAT, 33) = MAK8
    S1.Cells(SONSAT, 34) = MAK9
    S1.Cells(SONSAT, 35) = SN1
    S1.Cells(SONSAT, 36) = SN2
    S1.Cells(SONSAT, 37) = SN3
    S1.Cells(SONSAT, 38) = SN4
    S1.Cells(SONSAT, 39) = SN5
    S1.Cells(SONSAT, 40) = SN6
    S1.Cells(SONSAT, 41) = SN7
    S1.Cells(SONSAT, 42) = SN8
    S1.Cells(SONSAT, 43) = SN9
    S1.Cells(SONSAT, 44) = FYAN1
    S1.Cells(SONSAT, 45) = FYAN2
    S1.Cells(SONSAT, 46) = FYAN3
    S1.Cells(SONSAT, 47) = FYAN4
    S1.Cells(SONSAT, 48) = FYAN5
    S1.Cells(SONSAT, 49) = FYAN6
    S1.Cells(SONSAT, 50) = TOPLAM
End Sub
 

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
textbox isimlerini ardışık olarak sıralı gidecek şekilde isimlendirirseniz döngü kurmak mümkün olur. Ayrıca yukarıda yazdığınız şekildede bir yavaşlama olacağını sanmıyorum, sebebi başka yerde aramak gerekir.
 
Katılım
9 Ocak 2007
Mesajlar
27
Excel Vers. ve Dili
2003 ingilizce
teşekkürler syn leventm

anladığım kadarıyla yavaşlama benim bilgisayardan kaynaklanıyor.
dolayısıyla kodu kısaltmanında bi gereği kalmadı sonuçta hepsini yazmış bulundum:).
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
En azından şunu yapabilirsiniz. Uzunca kodlar yazmanızın da bir anlamı yok.

Kod:
Private Sub CMDKAYDET_Click()
    Set S1 = Sheets("MALIYET")
    say = WorksheetFunction.CountIf(S1.[a:a], girdi1)
    
    If say > 0 Then
        SAT = S1.[a1:a65536].Find(girdi1).Row
    Else
        SAT = S1.[a65536].End(3).Row + 1
    End If
    S1.Cells(SAT, 17) = GR1
    S1.Cells(SAT, 18) = GR2
    S1.Cells(SAT, 19) = GR3
    S1.Cells(SAT, 20) = GR4
    S1.Cells(SAT, 21) = GR5
    S1.Cells(SAT, 22) = GR6
    S1.Cells(SAT, 23) = GR7
    S1.Cells(SAT, 24) = GR8
    S1.Cells(SAT, 25) = GR9
    S1.Cells(SAT, 26) = MAK1
    S1.Cells(SAT, 27) = MAK2
    S1.Cells(SAT, 28) = MAK3
    S1.Cells(SAT, 29) = MAK4
    S1.Cells(SAT, 30) = MAK5
    S1.Cells(SAT, 31) = MAK6
    S1.Cells(SAT, 32) = MAK7
    S1.Cells(SAT, 33) = MAK8
    S1.Cells(SAT, 34) = MAK9
    S1.Cells(SAT, 35) = SN1
    S1.Cells(SAT, 36) = SN2
    S1.Cells(SAT, 37) = SN3
    S1.Cells(SAT, 38) = SN4
    S1.Cells(SAT, 39) = SN5
    S1.Cells(SAT, 40) = SN6
    S1.Cells(SAT, 41) = SN7
    S1.Cells(SAT, 42) = SN8
    S1.Cells(SAT, 43) = SN9
    S1.Cells(SAT, 44) = FYAN1
    S1.Cells(SAT, 45) = FYAN2
    S1.Cells(SAT, 46) = FYAN3
    S1.Cells(SAT, 47) = FYAN4
    S1.Cells(SAT, 48) = FYAN5
    S1.Cells(SAT, 49) = FYAN6
    S1.Cells(SAT, 50) = TOPLAM
End Sub
 
Katılım
9 Ocak 2007
Mesajlar
27
Excel Vers. ve Dili
2003 ingilizce
teşekkürler sayın alpi

:)bu bir maliyet hesaplama programı olacak inş. dolayısyla doğru olan bu "%50 işçilik kaybı"nı önlemiş bulunuyoruz. teşekkürler.
 
Üst