M

Çözüldü Macro ile Excel Dosyasına Veri Ekleme

  • Konuyu başlatan Konuyu başlatan merakli
  • Başlangıç tarihi Başlangıç tarihi

merakli

Site Üyesi
Macroya bu hafta giriş yaptım denilebilir.
Programcılık geçmişim olduğu ve önceden asp bildiğim için genel olarak işleyiş hakkında az-çok bilgim var.
Ancak Excel ile bunları kurgulamada sorun yaşıyorum.
Olayı anlamak açısından;
Elinizde varsa bu tarz işlemleri gerçekleştiren örnek dosyalar var mıdır? (Bu şekilde bir örnek ile olayı anlatan web adresi ya da youtube linkide olabilir)
En makbulü ise sizin yapabileceğiniz temel işlevleri içeren bir örnek.

örnekte merak ettiğim hususlar şunlar olacak.

Form elemanları
sayısal veriler metin ya da tarih true-false gibi değerler olduğunda nasıl bir değişiklik oluyor
Userform nasıl çağrılıyor
Form kontrolleri nerede ne şekilde yapılıyor
Formdan gelen veriler nasıl kaydediliyor.
Düzenleme işleminde kayıtlı veriler nasıl çekiliyor ve yeniden kaydediliyor
vb.
özellikle form kontrolünü boş bırakmayınız şeklinde uyarı yerine
e-posta adresinizi uygun formatta giriniz.
bu alana metin girebilirsiniz ya da abcdef....zve boşluk karakterleri girilebilir
Bu alana sayısal değerler girilebilir
 
Doğal olarak yazılacak şeyler, yazanın bilgisiyle/tecrübesiyle sınırlı.

Bu şekilde; tüm seçenekleri içine alacak açıklamalar yazmak, örneklendirmeler yapmak mümkün olmayabilir.
Bence forumun Excel Makro Soruları ve Genel Excel Soruları başlığı altındaki konu sayfalarında tarama yapıp,
UserForm içeren konu sayfalarındaki örnek belgeler üzerinden, sorunlar ve verilen çözüm önerilerini ilgili örnek belgelere uygulayarak,
belgede mevcut kodlarda ve çözüm önerilerinin içeriklerinde değişiklikler yaparak, bu değişikliklerin etkilerini gözlemlemek faydalı olur.

Ayrıca VBA ekranında (ALT+F11 tuşlarıyla erişilebilir); View menüsündeki Locals Window ve Properties pencerelerini aktif hale getirip,
UserForm'un Properties bölümündeki ShowModal özelliğini = False olarak ayarladıktan sonra,
makroları, userformdaki nesne kodlarını, form üzerinde işlem yaparak/tıklayarak değil, VBA ekranında imlecin ilgili prosedüre gelmesini sağlayıp makroyu/işlemi F8 tuşuna aralıklarla basarak ADIMlamak, bu adımlama sırasında da Locals penceresindeki değişimleri takip etmek çok yararlı olur.

Excel'in yerleşik işlevlerine hakimiyet seviyesinin yüksekliği, makrolara geçişi/anlamayı kolaylaştıran bir unsur.
Tabi bir de MAKRO KAYDET işlemi var ki, kıymeti yüksek. Özellikle userform değil, SAYFA OLAYLARI için makro kullanabilmek/oluşturabilmek için çok faydalı olur. Basitçe MAKRO KAYDET düğmesine tıklanır, sayfadaki işlem klasik yöntemle elle yapılır ve işlem tamamlandığında makro kaydı durdurulur. Sonra da VBA ekranında oluşan makro kodlarında, yapıla işlemlerin nasıl kodlamaya dönüştüğü görülebilir. Bundan sonra da sırada otomatik oluşan bu kodlarda değişikler yapıp makro F8 ile adımlanarak yapılan değişikliğin etkisi görülebilir, hata varsa hata ekranlarındaki uyarılar incelenir ve böyle devam...emek/zaman ve sonuç.

Benim tavsiyem doğrudan userform olaylarına girmek yerine; önce sayfa olayları üzerinde durulmasının, excelin kendi menü seçeneklerini detaylarına kadar incelemek/kullanmayı denemek, farenin sağ klik seçeneklerini incelemenin daha yararlı olacağı yönünde.
Sayfa olaylarının ardından, formüllerle elde edilen sonuçların formül kullanmadan makro kodları içerisinde alınmaya çalışılması, bunlardan sonra da artık işlemlerin userforma taşınması olaylarına bakılması yönünde.https://www.exceldestek.com/forumlar/genel-excel-sorulari.5/post-thread

.
 
Teşekkürler.
F8 olayını bilmiyordum Exceldeki F9 ya da Formülü Değerlendir gibi bir şey sanırım.
Denedim aşağıdaki makrolu bir dosyada F8 e bastığımda Direk Private Sub UserForm_Initialize() Sub'ına gitti.
Bu şu anlama mı geliyor?
Bir sayfada F8'e bastığımızda ilk çalışan koda mı gidiyor.

ShowModal özelliğini = False değerini vermedeki amacı kısaca bahseder misiniz?
Ekran görüntüsünde alt tarafta immediate gibi bir şey daha var orası bize neyi veriyor?
 

Ekli dosyalar

  • 1610477915086.webp
    1610477915086.webp
    32.1 KB · Görüntüleme: 4
Hayır tam öyle değil.

UserForma ait kodlardan (CommandButton'a atanmış KAYDETme kodu diyelim) herhangi birinin çalışabilmesi için
önce UserForm'un açılması gerekir. UserForm_Initalize kodu ise, UserForm açılmadan önce, nesneler. nesne özellikleri,
nesne içeriklerinin tanımlandığı, yüklendiği, başka bir anlatımla ÖNYÜKLENDİĞİ kodlardır.
UserForm açıldıktan sonra (Inıtalize kodu tamamlandığında userform karşınıza gelir) içindeki nesnelere atanmış kodlar artık kullanılabilir demektir. UserFormun ShowModal özelliğini False yapmışsanız form ekrandayken VBA ekranında ve excel sayfasında da işlem yapabilirsiniz. Ekranınızda sayfayı, VBA ekranını ve Userformu aynı anda görecek şekilde boyutlandırmalar yaparak çalışırsanız daha iyi olur.

ShowModal=True olduğunda, userform ekrandayken excel sayfasında işlem yapamazsınız, öneğin kod şu sayfaya kayıt yapıyordu yapmış mı diye bakmak için o sayfaya geçiş yapamazsınız vs..
Locals ekranında ise değişkenlerin aldığı değerleri görürsünüz.

.
 
Teşekkürler.
Evet bilmediğimden bende ekranlar arasında geçiş yaparken birini kapatmak zorunda kalıyordum.

Peki bazı VBA kodları UserForm code kısmına yazılmış bazıları ise Modul içine yazılmış.
Bu ayrımı neye göre yapıyoruz.
Örneğin Inıtalize kodu UserForm kodlama kısmına yazılmalıdır ya da bu herzaman Modul kısmına yazılır yahut her ikisine de yazılır farketme vb. gibi midir
 
Moderatörün son düzenlenenleri:
Ana hatlarıyla şöyle:
-- Worksheet_.... şeklinde başlayan kodların (sayfa olayları), ilgili sayfanın kod bölümünde olması zorunlu.
-- Workbook_.... şeklinde, çalışma kitabının yapısı, belgenin açılışı, kaydetilmesi, kapatılması gibi kodlar ThisWorkbook bölümünde olmalı.
-- Userform ve form içerisindeki nesnelere yönelik işlem kodları UserFormun kod bölümünde olmalı.
-- UDF - KTF (Excelin yerleşik işlevleri arasında olmayan bir işlev oluşturan ve formül gibi kullanılan Kişisel Tanımlı Fonksiyon) kodları MODULE içinde olmalı (Parayı yazıya çevirme gibi)
-- Diğer makro kodları ise MODULE içerisinde olmalı.

.
 
Çok teşekkürler

Karşılaştığım ve ilk defa gördüğüm bir durumu da buradan sormak istiyorum.

Genelde VBA çalışmalarımı örnek dosyalar inceleyerek yapıyorum. Genelde incelemeye değer dosyalar ise şifreli... İncelemek amaçlı şifreleri kaldırdığımda resimdeki gibi bir yapıyla karşılaştım. Bunu nasıl yapıyorlar. Önceden hiç böyle bir şey görmemiştim.
 

Ekli dosyalar

  • Screenshot_3.webp
    Screenshot_3.webp
    224.8 KB · Görüntüleme: 10
Üst