• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Eğitim Takip Programı Bazı Hatalar Hkk.

baykan_m

Altın Üye
Katılım
26 Ağustos 2015
Mesajlar
257
Excel Vers. ve Dili
Office 365
Merhaba Arkadaşlar,

Öncelikle şunu söylemeliyim ki excelde sadece 4 işlem yapabilen biriyken bu forum sayesinde ekteki programı (umarım program demek doğrudur :) yapabilecek ve işyerinde her istediğim işi makroya bağlayabilecek seviyeye geldim. Bu yüzden öncelikle sayfa yöneticilerine ve değerli destek ekiplerine gönülden teşekkür ederim.

Gelelim problemime; ben şirket içi eğitimlerimizi takip edebilmek amacıyla ek'teki programı yapmaya çalıştım. Ancak çoklu kritere göre filtrelemeyi başaramadım. Ayrıca dosya içerisinde belirttiğim bazı yavaşlık problemlerim mevcut. Bu problemler düzeltilirse sanırım güzel çalışan bir program haline gelecek.

Ayrıca program hakkında sizlerin düşüncelerini de almak isterim. Yani işlemler, makrolar, sayfalar ve formüller için doğru yollarımı seçmişim? Yanlış yaptığım noktalar nelerdir, bu işlemi şu şekilde yapsaydınız program şöyle güzel çalışırdı gibisinden düşüncelerinizi aktarırsanız çok mutlu olurum.

Hepinize çok teşekkür ederim.

İyi çalışmalar
 

Ekli dosyalar

Dosyanızda daha açılırken gelen ilk hata " read_only" makrosu oldu . Mevcut kodları silerek

Kod:
Sub ReadOnlyCheck()

Dim sor As Long

  If ThisWorkbook.ReadOnly = True Then
    sor = MsgBox("Dosya birileri tarafından kullanımda , bu nedenle sizin işlemleriniz kaydedilmeyecek.  " _
      & "Devam etmek istiyor musunuz ?", vbYesNo, "Read-Only File")
If Answer = vbNo Then Exit Sub
Thisworkbook.close

'kaydı save etmenin hiç bir önemi yok 
  End If

' diğer kodlar burada olacak. Ya da bu kontrol ok ise başka kodlamalar ile devam edilecek.

End Sub

Kısaca açılışta dosya halihazırda açıksa bilgi ver ve dosyayı bende kapat.

Oyle sanıyorum ki , dosyayı başkası tarafından kullanımdan sakınmak düşünceniz var. Ancak bu yontemde bildigim kadarı ile başkasında açıkken benim zarar vermemi engelle fikri hakim . Ya da amaç tam tersi olur ama , diğer ekranı engellemz .Bu nedenle sizin kodlarınızın sonunda save işiemi anlamsız.

Bunun yerine kademeli şifre penceresi açtırmak daha iyi olabilir.

Diğer hatalarınız ise ; vba açık ama , sayfaların uzantıları açık değil ve bunlarla uğraşmak hoş değil. Makro kaydet ile yaptığınız kodlamaların tam amacı belirsiz , algoritmayı sadece tahmin etmek gerek ki bu da ben öyle istemedim mesajlarına yol açar . Rapor sayfası ulaşılır değil . Bunların bulmacası ile zaman kaybetmek de doğru değil.
 
Sayın cems cevabınız için teşekkür ederim. Açılışta read only kodu olmasının sebebi dosyanın ağda bulunuyor olması. Yani aynı dosyayı 3 kişi kullanacak ve verileri bozmasın diye aynı anda 2. kişiye açtırmıyorum dosyayı. Sizin kodarınızıda deneyeceğim. Makro konusunda henüz çok yeniyim o yüzden genelde makro kaydet ile amacıma ulaşmaya çalışıyorum. Kademelişifre dediğinizi pek anlayamadım yardımcı olabilirmisiniz acaba?
 
Kademelişifre dediğinizi pek anlayamadım

Kural olarak , diğer bilgisayarlarda makro güvenlikleri yüksek ise , dosya çalışmayı durdurur ve kullanıcıdan onay bekler. Bu durma esnasılda vba şifreli değilse kodlara ulaşılır. Ya da dosya hata verirse ya da verdirilirse ve yine vba şifreli değilse kodlar açılır, şifre varsa şifreyi bekler.

Şifre userformu için ,

http://www.excel.web.tr/f14/userforma-kullanycy-ady-ve-ifre-le-giri-yapma-t86649.html

Burada şifreli userform oluşturma hakkında örnekler var, siz kendinize uygun olanı biçinlendirerek oluşturun ve bu userform un sağ üst çarpısından kapatmayı yasaklayın .
Dosyayı açan ya şifreyi girmek ya da kapatmak zorunda kalır.

Kademeli şifreleme ise ; her kullanıcıya belirli sayfaları kullanmasına izin vermek ve diğer sayfaları gizlemektir. Bununla ilgili kodları şurada
http://www.excel.web.tr/f48/hucre-d...gizleme-veya-gosterme-t166927.html#post910604 görebilirsiniz ,özellikle Sn Antonio ' nun verdiği kodları okumaya ve kendi dosyanıza uyarlamaya çalışın . Unutmamanız gereken ; kullanıcının görmemesi gereken sayfaların userform düğmelerini o şifre için pasif yapmanızdır.

Vba yı şifreleyebilirsiniz ,ulaşılamaz . Ama kayıt esnasında birbirini bozacak işlem trilyonda bir aynı milisaniyede iyürüme başlatmakla mümkün
bunun dışında çakışma olasılığı yok. Bir başka deyimle 100 satırı uc kisi aynı anda girse de , dizaynınınız doğru ise bozulma oluşmaz

Diğer yandan 3 kişiye açık da olabilir dosya , bunun için çalışma kitabını koru ve paylaş özelliğini inceleyin . Readonly formatı sadece 1 kişiye işlem yaptırır.

http://www.eba.gov.tr/video/izle/02587d6affc27119d4c3fb083b10e1226ff5381ed6028

Son hatırlatma ise ; dosyanızda yaptığınız bütün ayarları çıkışta geri yüklemelisiniz.Sözgelimi ribbon dediğimiz üst menüyü bu programda kaldırıp tam ekran yaptığınız ve çıkışta düzelttirmeden böyle bıraktığınızda bundan sonraki başka alakasız ama bütün exceller bu şekilde açılarak beklenmedik zaman kaybettiren sıkıntı yaratabilecektir.
 
Son düzenleme:
Merhaba.

Kodlarınız oldukça kalabalık.
-- Read.Only/tam ekran/araç çubuklarını gizleme/sayfa adlarının görünmesini engelleme/satır-sütun başlıklarını gizleme/şifreli giriş/kapatırken otomatik kaydetme gibi işlemleri,
çalışmanızı tam anlamıyla tamamladıktan sonra uygulamanızı öneriyorum.
Destek için konu sayfasını görüp örnek belgeyi açan üye, bu tür belgelerle tabiri yerindeyse pek cebelleşmek istemez ve destek almanız güçleşir.

Herneyse; ben Sayın cems'in bahsettiği hususlar dışında birşeyler söylemek istiyorum.
Nereden başlayacağımı bilemedim ve aklıma gelen ilk temel birkaç şeyi belirteyim istedim. Yazarak açıklamaya çalışayım.

-- For....Next döngülerinde 2 To 10000 gibi boş satırları da işleme tabi tutan ve sabit bir sayı (10.000) yerine,
2 To Sheets(....).Cells(Rows.Count,"A").End(3).Row gibi son dolu satıra kadar şeklinde
değişiklik yaparak döngülerin daha hızlı tamamlanmasını sağlayabilirsiniz.

-- Kodlarda (kayıt, filtre sonucunun başka sayfaya aktarılması gibi), herbir işlem için uzun uzun sayfa adı kullanmak yerine,
kodların başında Set t =Sheets("TANIMLAR") şeklinde bir satır eklerseniz, o kod bloku boyunca bu sayfaya yapacağınız atıfları,
sayfa adı yerine t.[A1] veya t.Cells(1,"F") gibi kısaltarak kullanabilirsiniz.

-- Kopyala - yapıştır işlemlerinde, işlemin yapılabilmesi için ne kaynak sayfanın ve kopyalanacak alanın,
ne de yapıştırılacak sayfa ve hücrenin seçilmesine gerek yok.
t.Range("A2:Z45").Copy pl.Cells(15,"B").Paste şeklinde tek bir satır yeterli olur.

-- Verileri silmek için de aynı şey geçerli. Sayfa.Select, alan.select, alan.clearcontents yerine sadece Sheets("GİRİŞ").Range("E3:F3").ClearContents şeklinde işlem yapılabilir.
vs, vs.
-- Son satır tanımlaması yaparak çok sayıda kod satırından kurtulabilirsiniz.
Örneğin; Application.Goto Reference:="R65000C5"/Selection.End(xlUp).Select/ActiveCell.Offset(0, 2).Range("A1").Select/ActiveCell.FormulaR1C1 = .....
gibi kod satırları yerine ilk_bos_satir=Sheets("....").Cells(Rows.Count,"A").End(3).Row+1
şeklinde bir satır ile ilk boş hücreyi tespit edip, sonra da Cells(ilk_bos_satir,"A").Formula = "...."
şeklinde işlemi tamamlayabilirsiniz.

Bence; belgenizde en azından yukarıda belirttiğim husularda bir temizlik yapıp, halledemediğiniz konular için tekrar destek istemelisiniz.
.
 
Ömer Bey,

Bu değerli desteğiniz için çok teşekkür ederim. Yazdığınız hususları tek tek düzeltmeye çalışacağım. Makro mantığı yeni yeni kafamda oturuyor. O yüzden çok acemice yaptığımın farkındayım. Anlattığınız hususlar kesinlikle çok işime yarayacak. Tekrar teşekkür ederim. İyi çalışmalar.
 
Arkadaşlar dosyada belirttiğim filtreleme olayını nasıl çözebiliriz acaba :(
 
Geri
Üst