Çözüldü VBA Kod Destek - Nerede Hata Yapıyorum?

Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Sevgili ExcelDestek.Com Üstadları,

VBA Kodlamayı video izleyerek öğrenmeye çalıştığım için bir yerlerde hata yapıyorum. Bulamıyorum. Desteklerinize, tavsiye ve önerilerinize ihtiyacım var.Şimdiden teşekkür ediyorum.

SORULAR

1.
Tahsilat Giriş Ekranı Formu ( Bu formda kodlama hatası yaptığım için veya" Üye Kayıt Formu" ile çakışıyor. Kayıt işlemi yapamıyorum. Formdaki verileri "TahsilatData" sayfasına kayıt yapmalıyım. Nerede hata yapıyorum?

2. Açıklama : Çalışmayı üye numarasına göre yaptığım için, "AnaSayfa"'daki Üye Bul ve "TahsilatOzeti" sayfasındaki Üye Bul butonu listeleme yaptığında listelenen isimler üye numarasına göre sıralı isim listesi olarak gelmektedir.
Soru: Üye Bul butonunda sıralanacak isimleri alfabetik sıraya göre listeleyebilir miyiz?

3.
Açıklama : "AnaSayfa" 'da bulunan "Üye No" değiştirildiğinde üye fotoğrafı değişiyor.(Excel belgesi ile aynı klasörde bulunan fotoğraflarımdan üye no ile aynı isime sahip fotoğraflar) Fakat "Üye Bul" butonu ile gelen listeden isim seçildiğinde üye fotoğrafı değişmiyor.
Soru: "Üye Bul" butonunda ki listeden isim seçtiğimizde üye fotoğrafının değişmesini sağlayabilir miyiz?
Bilgi: Dosya eki olarak 3 ve 11 numaralı üyeler de denemeniz için 3 ve 11 isimli iki adet jpeg dosyası da ekledim.

Teşekkür: Daha önce bu konuda @AhmetRasim bey yardımcı olmuştu kod konusunda tekrar Teşekkür ediyorum.

Saygılarımla
Yasin ÇİÇEK
 

Ekli dosyalar

  • DERNEK.xlsm
    DERNEK.xlsm
    682.9 KB · Görüntüleme: 6
  • 11.webp
    11.webp
    9.9 KB · Görüntüleme: 4
Moderatörün son düzenlenenleri:
Merhaba Sayın @ycicek .

Açtığınız konu çok soruyu içeriyor durumda.
Bu şekilde konu açılınca birçok üyemiz, çözüm önerisi için konuya el atmaya çekinebilir gibi geliyor bana.

Belgenizin işleyişine siz hakim olduğunuza göre;
en temelden başlayarak adım adım konuyu parçalar halinde sorarsanız, nihai çözüme daha hızlı ulaşılabilir.

Sorunuzun çözülmüş kısmını belgeye uygulayarak örnek belgenizi yenilerseniz daha doğru olur bence.
Sorunuz cevapsız kalmayacaktır.
.
 
Sn, Üstad @Ömer BARAN İlginiz ve tavsiyeniz için teşekkür ederim.
Yanlış anlamadıysam lütfen beni düzeltin. Yeni konu açıp sorularımı anlaşılabilir ve teker teker farklı konularda sormalıyım.
Bu konu üzerinde düzeltme ve dosya yenileme yapamıyorum sanırım. Bunun için de yeni bir konu da örnek belgemi tekrar etmeliyim. Doğru anlamışmıyım üstadım?
Eğer öyle ise gereksiz mesaj kirliliği açısından Konuyu Silerseniz yeni konu açarak sorularımı sorayım.
 
Bu konu açılmış artık buradan devam etmekte sorun yok.
Çözdüğünüz kısmın uygulandığı yeni bir örnek belge ekleyin.
Akışa göre çözülmesi gereken sorunun hangisi olduğunu belirtin ve buradan devam edilsin.

Başka zaman konu açtığınızda ; bütün olarak bir belgedeki sorunların tümünü listeleyip çözüm aramak yerine,
sorun türleri itibariyle ayrı ayrı yeni konu açarak nihai çözüme ulaşmayı tercih edin.

Böylece bir belgedeki ihtiyacın karşılanması yerine sorun/ihtiyaç türleri için ayrı konular açılması forum üyelerinin yararlanabilmesi,
benzer sorunları için çözüm ararken konu sayfalarını bulabilmesi daha kolay ve forum mantığına da uygun olur diye düşünüyorum.

.
 
Sayın @ycicek .

Belgeniz ekte.
-- Belgede DATABASE sayfasında AA sütununa mevcut isimleri elle aktarıp alfabetik sıralattım.
-- Yeni üye kaydına ilişkin kod'da, kayıt satır numarasını tespit eden kod satırında değişiklik ile,
ad soyadın C sütununa ilave olarak AA sütununa da eklenmesi ve AA sütununun alfabetik tekrar sıralanmasına dair kod ilavesi yaptım.
-- Belgenize alfabetik adını verdiğim bir ad tanımlaması ekledim ve bu ad tanımlaması üye bul ekranındaki açılır listenin kaynağı oldu.
-- Açılır listedeki seçimin sayısal karşılığı sayfada AB1'e yazdırılıyor, ardından da E4 hücresine eklediğim formül ile o üyenin üye numarası bulunuyor.
Gerisi mevcut yapıyla devam ediyor (sorun görmedim).

Açılış mesajınızdaki 1'inci soruyla ilgili çözümü, benim eklediğim belgeye de uygulayın.
Kalan sorunun ne olduğunu net ifade ederek; bu haliyle belgeyi foruma ekleyin. Kalınan noktadan devam edilebilir böylece.

İyi çalışmalar dilerim.
 

Ekli dosyalar

@Ömer BARAN Üstadim elleriniz dert görmesin.
" .Range("AA1:AA" & iRow).Sort [AA1], 1 " eklediğiniz bu kod sayesinde yeni kayıtlar AA sutununda en alt sıraya geliyor. Fakat sıralama yapmıyor. 1.Soru'mu da belge de düzelttikten sonra son halini ekleyeceğim.

Saygılarımla
Yasin ÇİÇEK
 
Sayın @ycicek .

Eklediğim belgede sorun göremiyorum.
Kodda, aşağıdaki ilk satır, yeni kaydı AA sütununda (sütun no 27) önce en sona ekler, ikinci satır ise alfabetik sıralama yapar.
.Cells(iRow, 27) = frmform.txtAdiSoyadi.value
.Range("AA1:AA" & iRow).Sort [AA1], 1
Kendi adımı iki kez (biraz değiştirerek) yeni üye kaydı olarak ekledim.
C sütununda son iki satırda yer alırken AA sütununda
(dolayısıyla da AD TANIMLAMASI üzerinden ÜYE BUL formundaki açılır listede)
alfabetik sırasında yer aldı.

İsterseniz sorunlu haliyle dosya ekleyin kontrol edeyim.
AD TANIMLAMASInı ve İletişim Kutusu1 formundaki açılır listenin kaynağını kontrol edin.
FORMÜLLER menüsündeki HESAPLAMA SEÇENEKLERİ kısmının OTOMATİK olduğundan eemin olun.
.Ekli dosyayı görüntüle 3096
 

Ekli dosyalar

  • 1577800478977.webp
    1577800478977.webp
    44.1 KB · Görüntüleme: 43
Userformlar üzerinden denemeler yaparken UserForm'un ShowModal özelliğini False yaparsanız daha az hata ile karşıyaşırsınız.
Bir kod satırını (AA sütuuna kayıt satırı) eklememişsiniz. Sıralama işleminin yapıydığı kod satırında da ....Sort .[AA1], 1
kısmında Sort kelimesinden sonraki [AA1] ibaresinin önüne 1 adet NOKTA eklemek gerekiyor.

Belgenizdeki makro bloklarının isimlerinde ve mümkün olduğunca kullanılan değişken adlarında Türkçe karakter kullanmamaya (ÜyeBul gibi),
Makro isimlerinin birebir sayfa adlarıyla aynı olmamasına özen gösterirseniz daha az sorun yaşarsınız.

Belgenizin kopyaları üzerinde işlem yaparsanız da sorun yaşayabilirsiniz.
Zira kodlarınızdaki Application.Run satırlarında makronun adı ÇİFT TIRNAK arasında verilirken çalışma kitabının adının doğru yazılması gerekiyor.
Bu nedenle, en iyisi bu kod kısımlarında çalışma kitabının adını kullanmadan doğrudan makronun adını kullanmak. (ben bu şekilde değiştirdim)

Yok eğer ille de çalışma kitasının adını da kullanmak istiyorsanız;
eklediğim belgeyi indirdikten sonra eski belgenizin adını değiştirin, indirerek çalıştıracağınız belgenin adının da DERNEK.xlsm olduğundan emin olun.

Ayrıca, örneğin son eklediğiniz belgedeki Submit kod blokunda, benim daha evvel eklediğim belgedeki iRow=.... satırını da değiştirmemişsiniz.

Ricam şudur; eklediğim belge üzerinde çalışıp, sorun yaşadığınızda da üstünde değişiklikler yaparak en baştaki dosyanızı değil,
benim eklediğim belgeyi sorunlu haliyle foruma ekleyin ki
her seferinde önceki yapılanların belgenize uygulanıp uygulanmadığından emin olabileyim.

Belgeniz ekte.
 

Ekli dosyalar

Üstadım elleriniz dert görmesin. Tavsiyelerinize uyacağım zira sizden öğreneceğimiz çok şey var. Hakkınızı helal edin lütfen sizi istemeyerek de olsa ikinci kez aynı kodu düzeltmek zorunda bıraktım. Bu vesileyle ExcelDestek.Com ailesinin ve tüm üyelerinin de yeni yılını kutlar esenlikler dilerim.

Saygılarımla
 
Tekrar merhaba Sayın @ycicek .

Açılış mesajındaki 3'üncü hususu atlamışım.
Yeni belgeniz ekte.

Resim getirme işi için Worksheet_Change kodu kullanmayı öngörmüşsünüz ancak bu kod'un tetiklenmesi için,
hedef hücrede formül ile değil elle yazarak değişiklik yapılması gerekir.
Ayrıca ÜYEBUL makrosu da belgenizde 2 adet olup; bunlardan biri resimin de getirileceği AnaSayfa, diğeri ise
içerisinde resim alanı olmayan HesapÖzeti sayfası.

Bu duruma göre belgeye önce RESIM_GETIR isimli bir makro ekledim.
Resimlerin bu belgeyle aynı dizinde olduğu ve Üye NO ile aynı adı taşıdığı varsayıldı.
-- ÜyeBUL işlemi AnaSayfada yapılmışsa doğrudan bu koda eklenen Call RESIM_GETIR yöntemiyle,
-- ÜyeBUL işlemi HesapÖzeti safasındaki düğme üzerinden yapılmışsa da, Anasayfa aktif hale geldiğinde,
yani Worksheet_Ativate kodu içerisine Call RESIM_GETİR bağlantısı yoluyla
belirtilen alana ilgili resimin getirilmesini sağladım.

Eklenen resim, H6:H14 birleştirilmiş hücresinin yükseklik/genişlik oranıyla, resimin orijinal en/boy oranı arasındaki
oransal ilişkiye göre boyutlandırılır ve yatay/dikey ortalanır durumda.

İyi çalışmalar dilerim.
.
 

Ekli dosyalar

Üstadım siz yapmışsınız ve çok da güzel olmuş, Teşekkür ederim. Bu arada ben de gider kısmı için gider formu çalışması yapmak istiyorum. Muhasebe işinden anlamadığım için mantık kurmaya çalışıyordum bu konu da bilginiz varsa tavsiye de bulunur musunuz?. Kasa hesabını gösterebilmemiz için, Tahsilat (Gelir) ile Giderin aynı data sayfasında mı olması lazım. Yoksa ayrı sayfalarda gösterip rapor sayfası mı yapmalı. Aynı sayfa da olursa Tahsilat Ekranı ile Gider ekranını birleştirmek mi gerekir. Ödeme türünü Gelir Gider olarak mı girmeliyiz..Bir de Gider kısmına girildiğinde üye isimlerine gerek kalmıyor kafam iyice karıştı. Tavsiyeniz ne olurdu üstadım. Bu arada konuyu Destek Ekibi tarafına taşıyabiliriz. 🙏
 
Moderatörün son düzenlenenleri:
Sayın @ycicek .
Forumumuzun özelliklerinden biri olan ve ücretli olabilecek içerikteki isteklerin iletilebileceği
DESTEK TALEBİ bölümünü kullanmak istiyorsanız; solda verdiğim bağlantıyı veya
forum sayfalarının üst kısmındaki Destek Talebi bağlantısını kullanabilirsiniz.

Forum genel ortamındaki bir konunun o bölüme taşınması mümkün değil malesef.
Kendiniz, ilgili bölümde konu açmalısınız.

Böyle bir isteğiniz olacaksa, açıklamalarınızı, her türlü seçeneği içerecek şekilde detaylı yazmanızda yarar var.
İlgili alandaki belgelerin/yazışmaların sadece konu sahibi ve forum yönetim ekibince görülebildiğini de hatırlatayım.
.
 
Üstadım, detaylı açıklamanız için teşekkür ederim. O halde bu konu şimdilik burada kalsın. Dün akşam ki çay muhabbetimizden sonra aklıma bir fikir geldi. Bunu Öneri konusunda açacağım. Tekrar teşekkürler.
 
Merhabalar :)
Konu çözülmüş, yemekler yenilmiş, çaylar içilirken yetiştim sanırım. 🤭

@Ömer BARAN Hocamın hazırladığı dosya kadar detaylı değil ama alternatif olarak bir kenarda dursun. :)
Alternatifi nedir derseniz;
-- Üye bulma işleminde UserForm ile Eski Ama Sadık Dostumuz ADO kullanıldı, bu kadar. :)
 

Ekli dosyalar

Üst