Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dynamisch erstellte UserForm1 wird nicht sofort angezeigt
#1
Hallo meine Lieben,

ich habe bei der dynamischen Erstellung meiner UserForm ein Problem. Ich kann die UserForm1 dynamisch erstellen, aber nicht sofort anzeigen lassen.

Dies hat zur Folge, dass ich meine Prozedur Anzeigen 2 mal starten muss, damit die dynamisch erzeugte UserForm1, das erste Mal angezeigt wird.
(woraufhin, dann als kleine Nebenwirkung noch eine 2 UserForm2  durch die Prozedur CreateUserForm erstellt wird)

Wie kriege ich es hin, damit meine gerade erstellte UserForm1 auch gleich angezeigt wird?



Code:
Sub Anzeigen()
'Muss diese Prozedur 2 mal durchlaufen lassen, damit die UserForm1 aus CreateUserForm angezeigt wird.
On Error Resume Next
CreateUserForm
UserForm1.Show
End Sub


Sub CreateUserForm()
'Erzeugt zwar eine Userform, aber wie kann ich diese dann auch sofort anzeigen lassen?
Dim mynewform As Object
Set mynewform = Application.VBE.ActiveVBProject.VBComponents.Add(3)

With mynewform
.Properties("Height") = 246
.Properties("Width") = 616
.Name = "UserForm1"
.Properties("Caption") = "Testlauf"
End With

Code zum Löschen der Userformen:


Code:
Sub LöscheUserformen()
'verbesserungswürdig, löscht erstMal im Rundumschlag bis zu 10 UserFormen!
On Error Resume Next
Dim i As Integer
For i = 1 To 10
Application.VBE.ActiveVBProject.VBComponents.Remove _
   Application.VBE.ActiveVBProject.VBComponents.Item("UserForm" & i)
Next
End Sub
Antworten Top
#2
Hallo VBATartar,
warum weiß ich auch nicht so genau, aber:
Sub Anzeigen()
'nun geht es beim ersten Mal
On Error Resume Next
CreateUserForm
NowShow
End Sub
Sub NowShow()
UserForm1.Show
End Sub
Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#3
Danke AlterDresdner, es geht!


Dank deiner Hilfe würde ich jetzt aber nur noch die Prozedur CreateUserForm aufrufen:
Code:
Sub CreateUserForm()
Dim mynewform As Object
Set mynewform = Application.VBE.ActiveVBProject.VBComponents.Add(3)
With mynewform
.Properties("Height") = 246
.Properties("Width") = 616
.Name = "UserForm1"
.Properties("Caption") = "This is a test"
End With
NowShow
End Sub

Sub NowShow()
UserForm1.Show
End Sub
Das Ganze ist bisher nur ein "Versuchsballon". Andere dynamische Steuerelemente müssen ja ebenfalls noch eingebaut werden. Und bei jedem Aufruf sollte vorher die UserForm1 wieder zerstört werden. Siehe Code weiter oben. Aber die nächsten Fragen und Weiterentwicklung kommt bestimmt. Demnächst in diesem
schönen Forum!
Antworten Top
#4
Hallo,

mein Vorschlag wäre:
Sub CreateUserForm()
Dim strName As String
strName = "UserForm1"
With Application.VBE.ActiveVBProject.VBComponents.Add(3)
.Properties("Height") = 246
.Properties("Width") = 616
.name = strName
.Properties("Caption") = "Testlauf"
End With
VBA.UserForms.Add(strName).Show
End Sub

Siehe z.B. hier: http://www.online-excel.de/fom/fo_read.php?f=1&bzh=9324&h=9312

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste