2009-02-19 21 views
8

के साथ एक्सेल उपयोगकर्ताफॉर्म में एक फ्रेम में नियंत्रण जोड़ना मुझे लेबल और बटन गतिशील रूप से बनाने की आवश्यकता है और फिर उन्हें उपयोगकर्ताफॉर्म के भीतर फ्रेम में जोड़ना होगा। मैं यह कैसे करु? ऐसा लगता है कि यह वास्तव में आसान होना चाहिए।वीबीए

उत्तर

14

निम्नलिखित कोड दर्शाता है कि कैसे आप गतिशील रूप से नियंत्रण के साथ एक userform में एक फ्रेम ...

प्रपत्र मैं प्रयोग किया जाता रहा frame1 नाम के एक फ्रेम नियंत्रण था में पॉप्युलेट कर सकते हैं, तो UserForm_Initialize में आप Frame1.Controls कहते हैं। फ्रेम में एक नियंत्रण एम्बेड करने के लिए जोड़ें। आप उस नियंत्रण को सेट कर सकते हैं जो आपके द्वारा उपयोगकर्ताफॉर्म कोड मॉड्यूल में परिभाषित किया गया है ताकि आप जो भी नियंत्रण चाहते हैं उस पर ईवेंट का जवाब दे सकें ...

तो इस विधि के साथ आपको पूर्व-लिखना होगा आपके द्वारा बनाए गए किसी भी नियंत्रण कोड के लिए इच्छित कोई भी ईवेंट कोड ...

यह भी ध्यान रखें कि आप अपने नियंत्रण को स्थिति और आकार दे सकते हैं भले ही शीर्ष, बाएं, चौड़ाई और ऊंचाई गुण इंटेलिजेंस में आवश्यक न हों ...

Private WithEvents Cmd As MSForms.CommandButton 
Private WithEvents Lbl As MSForms.Label 

Private Sub UserForm_Initialize() 
    Set Lbl = Frame1.Controls.Add("Forms.Label.1", "lbl1") 
    Lbl.Caption = "Foo" 
    Set Cmd = Frame1.Controls.Add("Forms.CommandButton.1", "cmd1") 
End Sub 

Private Sub Cmd_Click() 
    Cmd.Top = Cmd.Top + 5 
End Sub 

Private Sub Lbl_Click() 
    Lbl.Top = Lbl.Top + 5 
End Sub 
+5

'add' विधि में वर्ग नाम के अंत में' 1 "' क्यों? – Triztian

+0

मुझे नहीं पता। मुझे पता है कि यह इसके बिना काम नहीं करता है। –

+0

मैं वास्तव में जानना चाहता हूं कि इसे "फॉर्म। कमांडबटन 1" क्यों होना चाहिए – FinancialRadDeveloper

4

उपरोक्त विषय पर मेरी विविधता। यह सिर्फ 4x4 सरणी बटन के लिए है। उपयोगकर्ताफॉर्म बनाएं और इसे अपने कोड में जोड़ें। वही अवधारणाओं का उपयोग आपके लेबल के साथ किया जा सकता है (या पिछला उत्तर देखें):

Private cmdLots(20) As MSForms.CommandButton 

Private Sub UserForm_Initialize() 
For i = 1 To 4 
For j = 1 To 4 
    k = i + (4 * j) 
    Set cmdLots(k) = UserForm2.Controls.Add("Forms.CommandButton.1", "cmd1") 
    With cmdLots(k) 
     .Top = i * 25 
     .Left = (j * 80) - 50 
     .BackColor = RGB(50 * i, 50 * j, 0) 
     .Caption = "i= " & i & " j= " & j 
    End With 
Next j 
Next i 
End Sub 
+0

उन सोलह बटनों का उपयोग कैसे करें? – Qbik

+0

@Qbik "WithEvents" पर पढ़ा गया है और आप देखेंगे। – Robino

+0

यह भी पढ़ें http://stackoverflow.com/questions/10130300/how-do-we-now-the-sender-of-the-buttons-in-vba – Robino