• DİKKAT

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

Textbox'ları otomatik adlandırma ve mesafelerini ayarlama

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,
Userform üzerindeki 100'lerce adet textbox'ları otomatik adlandırabilir miyiz?

Mesela a101, a102, a103.................a199 gibi adlandırmak istiyorum. ama tek tek adlandırmak hem uzun sürüyor hem de hata yapabiliyorum.
Böyle bir özellik veya pratik bir yol var mıdır?

İkinci sorum,
10'larca hatta 100'lerce textbox'ları topluca yükseklik ve genişliklerini ayarlayabiliyoruz. Peki aralarındaki mesafeleri otomatik ayarlayabilir miyiz?
Böyle bir özellik veya pratik bir yol var mıdır?

İyi çalışmalar,
Kolay gelsin.
 
Kod:
Sub MakeUserForm()
    Dim TempForm As Object
    Dim NewLabel As MSForms.Label
    Dim NewTextBox As MSForms.TextBox
    Dim X As Integer
    Dim Line As Integer
    Dim MyScript(4) As String

    'This is to stop screen flashing while creating form
    Application.VBE.MainWindow.Visible = False

    Set TempForm = ThisWorkbook.VBProject.VBComponents.Add(3)

    'Create the User Form
    With TempForm
        .Properties("Caption") = "My User Form"
        .Properties("Width") = 450
        .Properties("Height") = 300
    End With

    'Create 10 Labels
    For X = 0 To 9
        Set NewLabel = TempForm.designer.Controls.Add("Forms.label.1")
        With NewLabel
            .Name = "FieldLabel" & X + 1
            .Caption = "My Label " & X + 1
            .Top = 20 + (12 * X)
            .Left = 6
            .Width = 90
            .Height = 12
            .Font.Size = 7
            .Font.Name = "Tahoma"
            .BackColor = &H80FFFF
        End With
    Next

    'Create 10 Text Boxes
    For X = 0 To 9
        Set NewTextBox = TempForm.designer.Controls.Add("Forms.textbox.1")
        With NewTextBox
            .Name = "MyTextBox" & X + 1 ' isim kısmını bu satırda belirleyebilirsiniz.
            .Top = 20 + (12 * X)
            .Left = 100
            .Width = 150
            .Height = 12
            .Font.Size = 7
            .Font.Name = "Tahoma"
            .BorderStyle = fmBorderStyleSingle
            .SpecialEffect = fmSpecialEffectFlat
        End With
    Next

    For X = 0 To 9
        With TempForm.codemodule
            Line = .countoflines
            MyScript(0) = "Sub MyCheck" & X + 1 & "_Click()"
            MyScript(1) = "If .MyCheck" & X + 1 & " = true then"
            MyScript(2) = ".result_Text" & X + 1 & ".caption = ucase(.mytextbox" & X + 1 & ".value)"
            MyScript(3) = ".result_Text" & X + 1 & ".caption = lcase(.mytextbox" & X + 1 & ".value)"
            .insertlines Line + 3, MyScript(0)
            .insertlines Line + 2, "With Me"
            .insertlines Line + 3, MyScript(1)
            .insertlines Line + 4, MyScript(2)
            .insertlines Line + 5, "Else"
            .insertlines Line + 6, MyScript(3)
            .insertlines Line + 7, "End if"
            .insertlines Line + 8, "End With"
            .insertlines Line + 9, "End Sub"
        End With
    Next

    'Show the form
    VBA.UserForms.Add(TempForm.Name).Show

End Sub

Kaynak: http://www.tek-tips.com/faqs.cfm?fid=5757
 
Selam Sayın hamitcan,
İlginize çok teşekkür ederim. Sorumu tam olarak anlatamadım. Kodsuz daha pratik yolu olup olmadığını sormuştum.
Ancak, yine de verdiğiniz kodları yeni bir userform ekleyip içine kopyaladım. herthangi bir değişikilik göremedim. workbook ve modul1'e de kopyalarak denedim. bu seferde hata verdi. Kodları nasıl kullanacağım? pek anlayamadım. Biraz izah ederseniz sevinirim.
Kolay gelsin.
 
Selamlar,

Sn. Ergün Güler,

Kodları boş bir excel dosyasında boş bir modüle ekleyin ve çalıştırın. Bu kodlar UserFormu ve üzerindeki nesneleri sıfırdan oluşturarak dosyaya eklemektedir. Yani mevcut UserFormunuz üzerinde bir değişiklik yapmamaktadır.
 
Selamlar,

Sn. Ergün Güler,

Kodları boş bir excel dosyasında boş bir modüle ekleyin ve çalıştırın. Bu kodlar UserFormu ve üzerindeki nesneleri sıfırdan oluşturarak dosyaya eklemektedir. Yani mevcut UserFormunuz üzerinde bir değişiklik yapmamaktadır.

Dediğinizi yaptım.
Compile error:
User-defined type not defined

hatası veriyor
 
Selam Sayın Hamitcan,
Öncelikle ilginize çok teşekkür ederim.
Gönderdiğiniz dosyayı inceledim. "form oluştur" düğmesine tıklayınca hata veriyor. Satır olarak da aşağıdaki satırda hata veriyor. (Sarı zemin içinde)
2003 kullanıyorum. Galiba problem benim excel dosyasından kaynaklanıyor olabilir.

Application.VBE.MainWindow.Visible = False

İyi çalışmalar.
 
Selamlar,

Bende 2003 kullanıyorum ve ekli dosyada hata almadım. Birde hata oluşturan satırı pasif yaparak tekrar deneyin.
 
Selamlar,

Bende 2003 kullanıyorum ve ekli dosyada hata almadım. Birde hata oluşturan satırı pasif yaparak tekrar deneyin.

Özür dilerim ama ben hala yapamadım. Belki de ne yapılması gerektiğini anlayamadım.
dosyanın Sayfa1'deki "form oluştur"a tıklıyorum.
Aynen şu hatayı veriyor:
" Run-time error '1004':
Visual Basic Projesi'ne programlı olarak erişim güvenli değil "


daha sonra debug dediğimde bir önceki mesajımdaki satırı gösteriyor.
 
Selamlar,

ARAÇLAR-MAKRO-GÜVENLİK menüsünden aşağıdaki pencereyi açın ve ilgili sekmeden kırmızı renkli bölümü aktif yaptıktan sonra makroyu çalıştırın.

Guvenilen_Yayimcilar.JPG
 
Selamlar,

ARAÇLAR-MAKRO-GÜVENLİK menüsünden aşağıdaki pencereyi açın ve ilgili sekmeden kırmızı renkli bölümü aktif yaptıktan sonra makroyu çalıştırın.

Guvenilen_Yayimcilar.JPG

Selam,
Çok teşekkür ederim dediğinizi uyguladım. Oldu.
Peki 1.mesajdaki asıl soruma kodsuz bir cevap bulabilir miyiz? Yani Userformun özerlliklerinde böyle birşey var mı? topluca adlandırmak, arslarındaki mesafeleri topluca ayarlamak gibi. v.s.
Saygılar.
 
Selamlar,

Maalesef böyle bir özellik bulunmamaktadır. Tasarım aşamasında formunuzda kullanacağınız nesneleri ve isimlerini iyi organize etmelisiniz. Çok sayıda nesne ile çalışma yapacaksanız bu ilk kuraldır. Sonradan yapacağınız nesne eklemeleri kod yapınızı komple değiştirmenize sebep olabilir. Bu sebeple başlangıç aşamasında tabiri caizse ince eleyip sık dokumalısınız.

Size kolaylık sağlayacaksa formunuz üzerinde kullanacağınız nesnelerinizi Frame nesnesi içine yerleştirirseniz topluca yer değiştirme işlemini yapabilirsiniz.
 
Çok teşekkürler Sayın Korhan Ayhan,
İyi çalışmalar
 
Geri
Üst