VBA Kullanıcı Formları
Userform, VBA'da programlamanın çok önemli bir parçasıdır. VBA uygulamanızın kullanıcılarıyla iletişim kurmak için profesyonel görünümlü bir kullanıcı arabirimi oluşturmanıza olanak tanır. Ayrıca, kullanıcıyı çalışma kitabınıza ne yaptıkları konusunda tamamen kontrol etmenize olanak tanır.
Elbette, kullanıcıdan parametreleri kabul etmek için çalışma sayfası hücrelerini kullanabilirsiniz, ancak kullanıcı formu çok daha iyi bir kullanıcı deneyimi sağlar.
Kullanıcı formunuzun yüksekliğini ve genişliğini Excel penceresinin boyutuna genişleterek, uygulamanızın normal bir Windows uygulaması gibi görünmesini sağlayabilirsiniz, kullanıcı Excel'i ana bilgisayar olarak kullandıklarından tamamen habersizdir.
Açılır menüler, liste kutuları, onay kutuları gibi tüm normal Windows kontrolleri sizin için kullanılabilir. Ayrıca, kullanıcı deneyimini geliştirmek için kullanabileceğiniz çok çeşitli yöntemler, olaylar ve özellikler var.
Önemli bir nokta, yerleşik veya kalıcı olan bir kullanıcı formunu görüntülediğinizde, VBE'deki kodunuzu düzenleyemez veya herhangi bir Excel işlevine erişemezsiniz. Yalnızca form kapatıldığında imleç kodunuzda görünecektir.
Dahili VBA Kullanıcı Formları
Excel VBA, kullanıcıyla iletişim kurmak için kullanılabilecek birkaç yerleşik form olarak.
Mesaj Kutusu
Bu, VBA'da en yaygın kullanılan formdur. Sadece bir metin mesajı görüntüler, muhtemelen bir kullanıcıya geçersiz giriş girdiğini veya bir VBA işleminin çalışmayı bitirdiğini bildirir. En basit biçiminde bir metin dizesi görüntülerler, ancak soru veya ünlem işareti gibi bir simge de ekleyebilir ve mesaj kutusuna farklı bir başlık verebilirsiniz.
Bu temel bir örnektir. Tıklanacak tek bir düğme var ve başlık çubuğunda 'Microsoft Excel' yazıyor
Bunu üretmek için kod çok basittir:
123 | Alt TestMsgBox()MsgBox "Bu işlem tamamlandı"Alt Bitiş |
Düğmeler, simgeler eklemek ve başlık çubuğunu değiştirmek için farklı parametreler kullanabilirsiniz.
123456789 | Alt TestMsgBox()Dim Ret Varyant OlarakRet = MsgBox("Emin misiniz?", vbYesNo Veya vbQuestion, "Uygulamam")Eğer Ret = vbYes ise'Sürecin buradaBaşkaAlt ÇıkışBitirAlt Bitiş |
Bu kod, bir "Evet" ve "Hayır" düğmesi ve bir soru işareti simgesi ekler ve başlık çubuğunu ayarlar. 'Veya' operatörünü kullanarak mesaj kutusunun stillerini birleştirebileceğinizi unutmayın.
Ayrıca, bir mesaj kutusundan bir değer döndürürken, dönüş değişkeni bir türev veya vbMsgBoxResult olarak tanımlanmalı ve mesaj kutusu ifadesi parantez kullanmalıdır,
Giriş Kutusu
VBA'da yerleşik olarak bulunan çok basit bir giriş kutusu vardır, bununla birlikte yapabilecekleriniz oldukça kısıtlayıcıdır. Yapabiliyorsanız, özel bir kullanıcı formu tasarlamak daha iyidir.
12345 | Alt TestInputBox()Dim Ret As StringRet = InputBox("Lütfen adınızı giriniz", "Ad Giriniz")MsgBox RetAlt Bitiş |
Parametrelere giriş için varsayılan bir değer de ekleyebilirsiniz.
Açık Dosya Adını Al
Bu, VBA kodunuzdaki Windows dosya iletişim kutusunu kullanmanıza olanak tanır. Çalışırken kullanıcı için çok etkileyici görünüyor, ancak dahil edilmesi çok basit ve otomatik olarak tüm dosya iletişim işlevselliğini onunla birlikte alırsınız.
Kod, kullanıcının yalnızca Excel dosyalarını görmesini kısıtlar. Ne yazık ki, Dosya adı kutusuna Excel olmayan bir dosya adı yazıp aç düğmesini tıklatabilirler, bu nedenle bir Excel dosyasının seçildiğinden emin olmak için bazı kodlara ihtiyacınız olacaktır.
Dosya iletişim kutusunu görüntülemeden önce varsayılan dizini kendi gereksinimlerinize göre değiştirmek için 'ChDir' komutunu kullanın.
FileFilter parametresinde joker karakter kullanımına dikkat edin. Görüntülenecek Excel dosyaları 2007 öncesi olabilir, makrolara sahip olabilir veya ikili olabilir, bu nedenle filtre '.xls*' olur.
123456 | Alt TestFileDialog()MyFile'ı Dize Olarak KarartChDir "C:\temp"MyFile = Application.GetOpenFilename("Excel Dosyaları (*.xls*),*.xls*", , "Bir dosya seçin")MsgBox DosyamAlt Bitiş |
Gerekirse, MultiSelect parametresini kullanarak kullanıcının aynı anda birkaç dosya seçmesine izin verebilirsiniz. Varsayılan, Yanlış'tır (yalnızca tek seçim)
12345678 | Alt TestFileDialog()Varyant Olarak MyFile DimChDir "C:\temp"MyFile = Application.GetOpenFilename("Excel Dosyaları (*.xls*),*.xls*", "Bir dosya seçin", , Doğru)MyFile'daki Her f İçinMsgBox fSonraki fAlt Bitiş |
Kullanıcı, birden fazla dosya seçmek için dosya iletişim kutusunda Shift tuşunu basılı tutar.
For Her döngüsü, seçilen her dosyanın tam yolunu ve adını görüntüler.
Excel Varsayılan İletişim Kutuları
Excel VBA içinde, herhangi bir standart Excel iletişim kutusunu görüntülemek için kullanabileceğiniz bir İletişim Kutusu koleksiyonu vardır. Dezavantajı, kullanıcının seçtiği parametrelere erişememeniz veya iletişim kutusunun görünümünü değiştirememenizdir, ancak bu iletişim kutuları, kullanıcıyı standart bir Excel işlevine yönlendirmede ve iletişim kutusunda belirli parametreleri seçmelerine izin vermede yararlı olabilir.
Buna iyi bir örnek, VBA'dan 'Yazdır' iletişim kutusunu görüntülemektir:
123 | Alt TestPrintDialog()Application.Dialogs(xlDialogPrint).GösterAlt Bitiş |
Dialogs koleksiyonunda parantezleri açtığınızda, yerleşik diyaloglar için çok sayıda sabitin bir listesini göreceksiniz. Kodunuzdaki bu seçeneklerden bazılarını denemeye değer
Yeni Kullanıcı Formu Ekleme
Visual Basic Düzenleyicisi'ne (VBE) bir kullanıcı formu ekleyerek kendi özel kullanıcı formlarınızı tasarlayabilirsiniz.
Bunu Ekle | VBE menü çubuğundaki UserForm.
'UserForm' üzerine tıklayın ve üzerinde geliştirmeniz için yeni bir boş form görünecektir.
Gerçek formun kendisi ('UserForm1' olarak gösterilir) oldukça küçük görünüyor, ancak imlecinizle tutamaçları sürükleyerek onu büyütmek veya daha da küçültmek için etrafındaki tutamaçları kullanabilirsiniz.
Ekranın sol alt köşesinde bir özellikler penceresi vardır. Odak doğrudan formun kendisine olduğu için, formun o forma özgü tüm özelliklerini içerir.
Açılan kutular ve komut düğmeleri gibi kontroller eklemeye başladığınızda, bu kontrollerin hepsinin kendi özellikleri olduğunu ve bunların her biri ile yapabilecekleriniz açısından çok farklı olabileceğini unutmayın.
Şu anda gördüğünüz özellikler yalnızca formun kendisi için geçerlidir.
'Ad' özelliği, form nesnenizi VBA kodu içinde tanımlamak için kullanılan addır. Nesne adı için daha anlamlı bir şey kullanmak isteyebilirsiniz, böylece kodunuzu gözden geçirirken hangi formun kullanıldığını açıkça görebilirsiniz.
"Ad" özelliği, ekranın sol üst köşesindeki "Proje Gezgini" penceresine de yansıyacaktır.
Formunuzun başlık çubuğunu "UserForm1"den farklı bir şekilde değiştirmek isteyeceksiniz ve bunu "Caption" özelliğine yeni metninizi yazarak yapabilirsiniz.
Formunuzun kullanıcı tarafından nasıl görüldüğü konusunda çok sayıda değişiklik yapabilirsiniz. Renkleri değiştirebilir, resim ekleyebilirsiniz, örn. kurumsal bir logo, "Sol" ve "Üst" düğmelerini kullanarak konumu değiştirin, "Yükseklik" ve "Genişlik" öğelerini kullanarak boyutu değiştirin, fare işaretçisini değiştirin ve daha pek çok şey
Bu özelliklerin tümü, formunuza eklediğiniz herhangi bir kontrol için programlı olarak da değiştirilebilir. Örneğin, bir kullanıcı bir liste kutusu kontrolünden seçim yapabilir ve kullanıcının tercihine göre diğer kontrolleri devre dışı bırakmak veya gizlemek isteyebilirsiniz.
Araç Kutusunu Kullanma
Formun kendisine tıkladığınızda bir araç kutusu açılır penceresinin göründüğünü fark edeceksiniz. Başka bir yere tıklarsanız, ör. özellikler bölmesinde kaybolur, ancak forma tıkladığınızda yeniden görünür.
Araç kutusu, form tasarımının gerçek mekaniğini sağlar. Bu, kullanıcıların aşina olduğu normal Windows denetimlerini formunuza eklemenizi sağlar.
Formda bir nokta ağı olduğunu fark edeceksiniz. Bu bir 'snapgrid'dir, böylece forma bir kontrol eklediğinizde, konumu otomatik olarak noktaların satırlarına ve sütunlarına hizalar. Bu, kontrollerinizi düzensiz bir görünüm elde etmemek için kontrollerinizi hizalamanıza büyük ölçüde yardımcı olur.
Bir kontrole tıklarsanız ve sonra onu kullanmamaya karar verirseniz, araç kutusunun sol üst köşesindeki 'Ok' simgesine tıklamak imlecinizi normale döndürür.
Araçlar | VBE menüsündeki Ek Kontroller. Bunlardan çok sayıda mevcuttur, ancak Windows ve Excel sürümlerinize bağlı olarak, her zaman çalışmazlar, bu nedenle genellikle bazı denemeler gerekir.
Ayrıca, kullanıcılarınızın bu ek denetimlerden bazılarına erişimi olmayabilir veya Windows ve Excel'in eski sürümlerini çalıştırıyor olabilir ve bu da sorunlara neden olabilir. Büyük kuruluşlarda, özellikle küresellerse, güvenebileceğiniz standart yapılı bir bilgisayar diye bir şey yoktur!
Formunuza Çıkış Düğmesi Ekleme
Bir Komut düğmesi, forma eklemek kolaydır. Bu, diğer Windows formlarında gördüğünüz düğmelerle aynı şekilde görünür, genellikle bir 'Tamam' veya 'İptal' düğmesi olarak.
Araç kutusundaki Komut Düğmesi simgesine tıklayın. Bu, simgelerin alt satırında soldan ikinci simgedir. Yukarıdaki resme bakın. Üzerinde 'ab' harfleri var.
Farenizin düğmesini basılı tutup denetimi formunuzun üzerine sürükleyebilir veya imleci bir 'çapraz' imlece dönüşeceği forma taşıyabilir ve düğmenizi konumlandırabilir ve boyutlandırabilirsiniz.
Denetimi forma sürüklerseniz, düğmenin varsayılan boyutunu alırsınız. İmleci forma taşımak, 'çapraz' imleci formunuz boyunca sürükleyerek düğmenin boyutunu değiştirmenize olanak tanır.
Formunuz şimdi şöyle görünecek:
Düğme, başlık olarak varsayılan metne sahip olacaktır, ancak bunu kendi gereksinimlerinize göre değiştirmek isteyeceksiniz. Düğme ('CommandButton1') içindeki metne tıklayabilirsiniz ve bu, başlığı doğrudan düzenlemenize olanak tanır.
Bunu özellikler penceresinde de değiştirebilirsiniz (ekranın sol alt köşesi). 'Caption' adında bir özellik göreceksiniz ve bunun için değeri düzenleyebilirsiniz. Bunu 'Çıkış' olarak değiştirin
Form özelliklerinde olduğu gibi, 'Ad' özelliği VBA kodunuzda kullanılacak adı tanımlar. Kodunuzda daha anlamlı ve belirgin bir ad kullanmak isteyebilirsiniz. Bunu 'Ad' özelliğine karşı girebilirsiniz.
Düğmeyi form üzerinde sürükleyerek yeniden konumlandırabilirsiniz ve düğme tutamaçlarına (beyaz kare kutular) tıklayarak ve tutamaçları sürükleyerek büyütüp küçülterek yeniden boyutlandırabilirsiniz.
Özellikler penceresindeki Yükseklik ve Genişlik değerlerini değiştirerek düğmeyi yeniden boyutlandırabilirsiniz.
VBE araç çubuğundaki yeşil üçgene tıklayarak veya F5 tuşuna basarak formunuzu Excel'de görüntüleyebilirsiniz.
Bir modül içerisinde VBA kodundan 'Göster' yöntemini kullanarak formunuzu arayabilirsiniz.
123 | Alt Gösteri Formu()KullanıcıForm1.GösterAlt Bitiş |
Kullanıcı formunuz etkili bir şekilde global bir nesnedir ve kodunuz içinde herhangi bir yerden çağrılabilir.
Şu anda komut düğmeniz hiçbir şey yapmıyor çünkü arkasında VBA kodu yok. Bunu kendin yazmalısın! Şu anda olabilecek tek şey, formunuzun sağ üst köşesindeki 'Kapat' X'i tıklayabilmenizdir.
VBA kodu eklemek için formdaki butona çift tıklayın
Bu sizi normal VBA kodu penceresine götürecek ve varsayılan tıklama olayını gösterecektir.
Formu kapatmak için 'Gizle' yöntemini kullanırsınız ve kullanıcıya ne olduğunu onaylamak için mesaj kutusu gibi başka herhangi bir kod da ekleyebilirsiniz.
Kod penceresinin üst kısmında iki açılır menü olduğunu unutmayın. İlki, form kontrollerinizi seçmenize izin verir ve ikincisi, kod eklemeniz için mevcut olan tüm olayları gösterir. Bir düğme için bariz olanı 'Tıklama' olayıdır, ancak 'Çift Tıklama' veya 'Fare Hareketi' gibi başkaları da vardır.
Formunuzu şimdi çalıştırdığınızda, düğme aslında bir şeyler yapar. Form kaybolur ve formun kapatıldığını onaylayan bir mesaj kutusu görüntülenir.
Elbette çıkış kodunu büyütebilirsiniz. Başka bir form görüntülemek veya kullanıcının formunuza girdiği parametreler üzerinde işlem yapmak isteyebilirsiniz.
Forma Etiket Denetimi Ekleme
Etiket denetimleri, kullanıcıya formdaki bir denetime ne tür veriler girmesi gerektiğini sormak içindir; metin kutusu, açılır menü, vb. Bir etiketin varsayılan olarak kenarlıkları yoktur, ancak bunlar gerekirse özellikler penceresinden eklenebilir.
Bir denetim olarak, yalnızca kullanıcıya okunurlar ve ister kalın bir başlık olsun, isterse neyin girileceği veya seçileceğine ilişkin bir talimat olsun, forma metin koymanın bir yoludur.
Bir etiket eklemek için, araç kutusundaki (üst sıra, soldan ikinci) 'A' simgesine tıklayın ve üzerine çift tıklayın veya imlecinizi forma getirin ve konumu ve boyutu seçin.
Özellikler penceresindeki 'Caption' özelliğini kullanarak veya etiket kontrolüne tıklayarak etiket kontrolü için metin girebilirsiniz.
Metnin, etiket denetiminin boyutuna göre kaydırılacağını ve metin dizesi çok uzunsa, formda tam olarak görünmeyeceğini, bu nedenle etiket denetiminin boyutlandırmasına dikkat etmeniz gerektiğini unutmayın.
Özellikler penceresini kullanarak, farklı renkler, yazı tipleri, arka stil gibi etiket kontrolünün görünümünü değiştirebilirsiniz. bir görüntüyü kaplıyorsa ve şeffaf olmasını istiyorsanız
Etiket kontrolü için kod oluşturulmasına gerek yoktur. Asıl amaç, kullanıcının diğer tüm kontrollerin nasıl çalıştığını görebilmesi için forma metin eklemektir.
Forma Metin Denetimi Ekleme
Kullanıcının metin girmesine izin vermek için bir metin kontrolü kullanılır, örneğin bir ad veya yorum girme
Metin denetimi, metin denetimi simgesine (üst sıra, soldan üçüncü) tıklayarak ve denetimi formunuzdaki yerine çift tıklayarak veya sürükleyerek araç kutusundan eklenir.
Metin kontrolü genellikle etiket kontrolü ile karıştırılır, ancak metin kontrolü kullanıcı girişi için olanıdır.
'Adınızı girin' metni, daha önce açıklandığı gibi bir etiket kontrolüdür ve artık kullanıcının içine bir şeyler yazabileceği beyaz bir metin kutumuz var.
Özellikler penceresini kullanarak metin kutunuz için renkleri, yazı tiplerini, özel efektleri değiştirebilir veya parola karakterlerini kullanabilirsiniz. Muazzam esneklik mevcuttur
Bir metin kutusu için çok önemli bir özellik, 'MultiLine' özelliğidir. Kullanıcının metin kontrolüne büyük miktarda metin girmesini istiyorsanız, ör. yorumlar, ardından 'MultiLine' özelliği True olarak ayarlanmalıdır.
Bu, False'nin bir varsayılanıdır; bu, metin kutunuzu ne kadar büyük yaparsanız yapın, girilen metnin sürekli bir satırda kalacağı ve metin kutusunun dışına çıkacağı anlamına gelir. Kutunun içine dolanmaz.
Çalışırken metin kutunuza sağ tıkladığınızda bir açılır pencere yoktur, ancak CTRL+V Yapıştır için çalışır ve CTRL+C, kullanıcı metni kesip yapıştırmak isterse, Kes için çalışır. uygulamalar
Yine, kullanıcının yazdığı metinle başa çıkmak için kendi kodunuzu yazmanız gerekir. Bunu bir çalışma sayfasındaki bir hücreye aktarmak isteyebilirsiniz.
Bu kodu, metin kutusu için 'Değiştir' etkinliğine ekleyebilirsiniz.
123 | Özel Alt TextBox1_Change()Sheets("Sayfa1").Range("A1").Value = TextBox1.ValueAlt Bitiş |
Ayrıca, kullanıcının uygulamanız üzerinde feci etkileri olacak çöp girmediğini kontrol etmek için bazı doğrulama kodları koymak isteyebilirsiniz.
change olayı bunun için iyi değil çünkü kullanıcı her yeni karakter yazdığında çağrılır. Kullanıcı bir metin dizisi yazmaya başlayabilir ve geçerli bir metni tamamlamadan önce doğrulama kurallarınızı ihlal ettiğini anında görebilir.
'Çıkış' olayını kullanırsınız. Bu, kullanıcı odağı formdaki başka bir denetime taşıdığında tetiklenir; bu, kullanıcının artık veri girmediği anlamına gelir.
123456 | Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)IsNull(TextBox1.Value) Veya Len(TextBox1.Value) < 4 iseMsgBox "Ad geçersiz", vbCriticalTextBox1.SetOdakBitirAlt Bitiş |
Kullanıcı formdaki başka bir denetimi tıklattığında, bu kod, metin kutusunda boş bir değer veya 4 karakterden az olup olmadığını test eder. Test doğruysa, kullanıcıya adın geçersiz olduğunu bildirmek için kritik simgeli bir mesaj kutusu görünür ve odak, kullanıcının düzeltmesi için rahatsız edici metin kutusuna geri taşınır.
Kullanıcı Çıkış düğmesine tıklasa bile, önce metin kutusu çıkış olayının gerçekleştirileceğini, bu nedenle kullanıcının girişi düzeltmeden çıkış yapmasını engellediğini unutmayın.
Bir Formdaki Olayları Başlatma ve Etkinleştirme
VBA ilk kez bir form oluşturup oluşturduğunda, bir 'Initialize' olayını tetikler. Ancak, form da bu noktada görüntülendiğinden, bir 'Etkinleştirme' olayını da tetikler. O andan itibaren, form "Göster" yöntemi kullanılarak her göründüğünde veya bir form hiyerarşisinin parçası olarak göründüğünde, "Etkinleştir" olayı tetiklenir, ancak "Başlat" olayı tetiklenmez.
'Initialize' olayı yalnızca bir kez gerçekleşir, ancak 'Activate' olayı birçok kez gerçekleşebilir
Formunuzda, örneğin giriş kontrollerinde çalışma sayfasından varsayılan değerler ayarlamak isteyebilirsiniz. metin kutuları, böylece bunlar formun ilk kullanımında görünür, ancak kullanıcı varsayılanların üzerine yazabilir ve bu yeni değerler, kod çalıştığı sürece yerinde kalır.
12345678 | Özel Alt UserForm_Initialize()TextBox1.Value = Sayfalar("Sayfa1").Range("A1").ValueTextBox1.Value=”” iseTextBox1.Visible=YanlışBaşkaTextBox1.Visible=DoğruBitirAlt Bitiş |
Kod penceresindeki ikinci açılır menüde 'Initialize' olayını ve ilk açılır menüde kullanıcı formu adını bulabilirsiniz.
Bu kod, bu makalenin önceki bölümlerinde oluşturulan metin kutusundaki varsayılan değer olarak "Sayfa1" üzerindeki A1 hücresindeki değeri kullanır. Form ilk kez görüntülendiğinde, varsayılan değer görünecektir. Kullanıcı daha sonra varsayılan değerin üzerine yazabilir ve bu korunur. CellA1 boşsa, metin kutusu gizlenir, aksi takdirde görünür olur
Varsayılan değer ayrıca sabit kodlanmış olabilir:
1 | TextBox1.Value = “John Smith” |
Ayrıca, kullanıcının belirli bir Excel oturumunda bu formu her başlattığında, kullanıcının girdiği değerlerin yeniden göründüğünden emin olmak isteyebilirsiniz. VBA kodu, bir denetimdeki 'Çıkış' olayını kullanarak değerleri çalışma kitabındaki hücrelere kolayca geri yazabilir ve formdaki 'Etkinleştir' olayını kullanarak bunları yeniden eski durumuna getirebilir
123 | Private Sub TextBox1_Exit(ByVal Cancel as MSForms.ReturnBoolean)Sheets("Sayfa1").Range("A10").Value = TextBox1.ValueAlt Bitiş |
123 | Özel Alt UserForm_Activate()TextBox1.Value = Sayfalar("Sayfa1").Range("A10").ValueAlt Bitiş |
Bu kod, kullanıcının değerlerini kalıcı hale getirecek ve ayrıca çalışma kitabının geri kalanıyla birlikte kaydedilmelerini sağlayacaktır.
Başvurunuzu ve Formlarınızı Kaydetme
Formlarınızı içeren Excel çalışma kitabınızı kaydettiğinizde, tüm formlar ve VBA kodları da kaydedilir. Ancak, formlar görüntülenirken sahip oldukları tüm değerler kaybolacaktır.
Kullanıcı çalışma kitabından veya formdan çıktığında değerlerin çalışma kitabındaki hücrelere geri yazılması ve böylece korunması için kod yazmak önemlidir.
Kipli ve Kipsiz Formlar
Formun kendisi 'Kipli Göster' özelliğine sahiptir. Bu, varsayılan olarak True olarak ayarlanmıştır, ancak False (modal olmayan) olarak değiştirilebilir.
Bir form kalıcı ise, form görüntülenirken Excel işlevlerinin hiçbirine erişilemeyeceği anlamına gelir. Bu, VBE penceresindeki kodunuzu içerir. Kodu görüntüleyebilirsiniz, ancak imleç ve klavye devre dışıdır.
Kalıcı olmayan bir formda, form görüntülenirken VBE penceresi de dahil olmak üzere tüm Excel işlevlerine erişebilirsiniz.
Bu, kullanıcı davranışını kontrol etme açısından önemlidir.
Form Kapatma
Kullanıcıyı belirli bir rotaya zorlamak için kodunuzu ne kadar iyi yazarsanız yazın, formun sağ üst köşesindeki 'Kapat' X'i tıklayarak bu kodu kolayca atlatabilirler.
Formun 'QueryClose' olayını değiştirerek bunun olmasını önleyebilirsiniz.
1234 | Private Sub UserForm_QueryClose(Tamsayı Olarak İptal, Tamsayı Olarak KapatModu)İptal = DoğruMsgBox "Bu işlem devre dışı bırakıldı"Alt Bitiş |
Kullanıcı formun "Kapat" X işaretini tıkladığında "QueryClose" olayı tetiklenir. Bu kod eylemi iptal eder, bu nedenle kullanıcı 'Çıkış' düğmenizi ve arkasındaki kodu kullanmaya zorlanır.
Denetimleri Etkinleştirme ve Devre Dışı Bırakma
Formunuzdaki tüm denetimlerin, Doğru veya Yanlış olarak ayarlanmış 'Etkin' adlı bir özelliği vardır. False ise, kontrol grileşir. Görülebilir ama kullanılamaz.
Yine True veya False olarak ayarlanmış 'Görünür' adlı bir özellik de vardır.
Belirli bir denetimi kullanılamaz hale getirmek veya kullanıcı tarafından tamamen görünmez kılmak için kod yazabilirsiniz. Bir 'Eğer' ifadesi kullanarak, bunu yapmanız gerektiğinde koşulları seçebilirsiniz.
Örneğin, kullanıcı TextBox1'e (ad) bir değer girene kadar başlangıçta 'Çıkış' düğmesini devre dışı bırakabilirsiniz.
123 | Özel Alt UserForm_Initialize()CommandButton1.Enabled = YanlışAlt Bitiş |
1234567 | Özel Alt TextBox1_Change()Len(TextBox1.Value) > 0 iseCommandButton1.Enabled = DoğruBaşkaCommandButton1.Enabled = YanlışBitirAlt Bitiş |
Bu kod, form ilk göründüğünde çıkış düğmesini (Komut Düğmesi 1) devre dışı bırakmak için 'Initialize' olayını kullanır ve ardından bir şey yazıldığında veya devre dışı bırakıldığında Çıkış düğmesini etkinleştirmek için TextBox1'deki (ad) 'Değiştir' olayını kullanır. kutu boş ise.
"Değiştir" olayı, metin kutusuna her yeni karakter yazıldığında veya metin kutusundan silindiğinde tetiklenir. Kullanıcı, düğmeyi etkinleştirmek için metin girmeye çalışır ve ardından tüm metni silerse, düğme anında devre dışı bırakılır.