- Katılım
- 7 Mayıs 2017
- Mesajlar
- 58
- Excel Vers. ve Dili
- 2016 Türkçe
Herkese merhaba,
Forumdaki değerli arkadaşlarımızın yardımı ile stok takibi için bir çalışma sayfası hazırladım. Bu kodlar tam olarak istediğim gibi çalışıyor fakat işlemler biraz uzun sürüyor. İşlem süresini kısaltmak için yapılabilecek birşey var mı acaba? Kodlar ile ilgili açıklamaları kırmızı ile boyadım daha rahat anlaşılabilmesi için.
Teşekkür ederim.
Forumdaki değerli arkadaşlarımızın yardımı ile stok takibi için bir çalışma sayfası hazırladım. Bu kodlar tam olarak istediğim gibi çalışıyor fakat işlemler biraz uzun sürüyor. İşlem süresini kısaltmak için yapılabilecek birşey var mı acaba? Kodlar ile ilgili açıklamaları kırmızı ile boyadım daha rahat anlaşılabilmesi için.
Kod:
Sub calistir()
[COLOR="red"]'Çalıştır butonuna bastığım zaman Stok Hareketleri sayfasına yapılan kayıt işlemi uzun sürüyor. Örneğin, tek kalem kayıt yapılacaksa hızlı ama 7-8 kalem kayıt yapılıyorsa yavaşlama yapıyor.[/COLOR]
filtretemizle
deneme
verifiltretemizle
veritemizle
End Sub
Sub deneme()
Dim s1 As Worksheet, s2 As Worksheet
Dim bul As Range, satir As Long
Set s1 = Sheets("Veri Girişi")
Set s2 = Sheets("Stok Hareketleri")
Application.ScreenUpdating = False
For Each bul In s1.Range("P2:P" & s1.Range("P65536").End(3).Row)
If bul.Value <> "" Then
satir = satir + 1
bul.EntireRow.Copy
s2.Select
sat = Sheets("Stok Hareketleri").Cells(65536, "A").End(xlUp).Row + 1
Sheets("Stok Hareketleri").Range("A" & sat).PasteSpecial xlPasteValues
End If
Next bul
[a1].Select
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Sub veritemizle()
[COLOR="red"]'Veri Girişi sayfasında her kayıt yapıldıktan sonra sahaları tekrar boşaltıyor ki yeni girişlere yer açılsın. Formüller olduğu için sadece içeriği temizletiyorum.[/COLOR]
Sheets("Veri Girişi").Select
Range("F2:P7000").Select
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Selection.ClearContents
Range("A1").Select
End Sub
Sub filtretemizle()
[COLOR="red"]'Stok Hareketleri sayfasında kullanıcı filtre yaptıktan sonra bu filtreyi bozması gerekiyor kayıtların doğru işlenebilmesi için. Bunu şansa bırakmamak içinde Stok Hareketleri sayfasında filtreyi otomatik temizletiyorum.[/COLOR]
Sheets("Stok Hareketleri").Select
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
Sheets("Veri Girişi").Select
End Sub
Sub verifiltretemizle()
[COLOR="red"]'Veri Girişi sayfasında kullanıcı filtre yaptıktan sonra bu filtreyi bozması gerekiyor kayıtların doğru işlenebilmesi için. Bunu şansa bırakmamak içinde Veri Girişi sayfasında filtreyi otomatik temizletiyorum.[/COLOR]
Sheets("Veri Girişi").Select
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
Sheets("Veri Girişi").Select
End Sub
Sub goster()
For s = 3 To Sheets.Count [COLOR="Red"]'3. sayfadan başlıyor ve toplamda 55 sayfada işlem yapıyor.[/COLOR]
For Each t In Sheets(s).Range("O2:O175").Cells
If t.Value <> "0" Then 'değeri 0 olmayan hücreleri gösterir
t.EntireRow.Hidden = False
End If
Next t
Next
End Sub
Teşekkür ederim.
