मैंने एक * .xlam ऐड-इन में उपयोगकर्ताफॉर्म बनाया और आईडीई में एक नया कमांडबार और बटन बनाया, लेकिन जब मैं बटन पर क्लिक करता हूं, तो उपयोगकर्ता फॉर्म Excel में खोला जाता है, और फोकस आईडीई से दूर किया जाता है। क्या .NET COM एड-इन का उपयोग किए बिना होस्ट एप्लिकेशन के बजाय आईडीई में उपयोगकर्ता फ़ॉर्म खोलने का कोई तरीका है?क्या होस्ट ऐप के बजाय आईडीई में उपयोगकर्ता फॉर्म प्रदर्शित करने का कोई तरीका है?
यहां वह कोड है जो कमांडबार और बटन बनाता है और बटन क्लिक ईवेंट को संभालता है।
Option Explicit
Public WithEvents cmdBarEvents As VBIDE.CommandBarEvents
Private Sub Class_Initialize()
CreateCommandBar
End Sub
Private Sub Class_Terminate()
Application.VBE.CommandBars("VBIDE").Delete
End Sub
Private Sub CreateCommandBar()
Dim bar As CommandBar
Set bar = Application.VBE.CommandBars.Add("VBIDE", MsoBarPosition.msoBarFloating, False, True)
bar.Visible = True
Dim btn As CommandBarButton
Set btn = bar.Controls.Add(msoControlButton, , , , True)
btn.Caption = "Show Form"
btn.OnAction = "ShowForm"
btn.FaceId = 59
Set cmdBarEvents = Application.VBE.Events.CommandBarEvents(btn)
End Sub
Private Sub cmdBarEvents_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
CallByName Me, CommandBarControl.OnAction, VbMethod
End Sub
Public Sub ShowForm()
Dim frm As New UserForm1
frm.Show
End Sub
पीएस आप commandbar दूर करने के लिए कोड की इस पंक्ति आवश्यकता हो सकती है ...
Application.VBE.CommandBars("VBIDE").Delete
हाँ: यह एक [VBE ऐड-इन] (http://stackoverflow.com/a/1942651/ 1188513) एक्सेल ऐड-इन के बजाय! ;) –
क्या आपका मतलब एक फ़्लोटिंग उपयोगकर्ताफॉर्म है जो फोकस चोरी नहीं करता है? –
ठीक है, मैं आईडीई से फोकस चोरी करने के बिना, * उपयोगकर्ताफॉर्म * फोकस प्राप्त करना चाहता हूं। मुझे पता नहीं है कि यह @ सिद्धार्थ रूट भी संभव है। – RubberDuck