Ich versuche, ein UserForm dauerhaft zu ändern, so dass ich den Code nur einmal ausführen muss, anstatt jedes Mal ausgeführt zu werden, wenn auf die Schaltfläche zum Öffnen von UserForm geklickt wird.Benutzerformulare dauerhaft ändern
Ich fand, dass dies für einige Leute funktioniert. Ich bin mir nicht sicher, was für mich falsch sein könnte.
Sub FormatUserForms(UF As UserForm)
UF.BackColor = RGB(51, 51, 102)
Dim ctrl As Control
With ThisWorkbook.VBProject.VBComponents("UFNewRequest").Designer
For Each ctrl In UF.Controls
Select Case TypeName(ctrl)
Case "Label"
ctrl.BackColor = RGB(51, 51, 102)
ctrl.ForeColor = RGB(247, 247, 247)
Case "CommandButton"
ctrl.BackColor = RGB(247, 247, 247)
ctrl.ForeColor = RGB(0, 0, 0)
Case "TextBox"
ctrl.BackColor = RGB(247, 247, 247)
ctrl.ForeColor = RGB(0, 0, 0)
Case "OptionButton"
ctrl.BackColor = RGB(51, 51, 102)
ctrl.ForeColor = RGB(247, 247, 247)
End Select
Next
End With
End Sub
Sub formatting()
FormatUserForms UFNewRequest
End Sub
Vielen Dank für jede Hilfe zu diesem Thema!
Also, was ist die Frage? –
BTW, wenn dieser Code im Code-Behind des Formulars ist, löschen Sie den 'UF' Parameter und verwenden Sie stattdessen' Me', [wie Sie gestern gesagt wurden] (http://Stackoverflow.com/a/42421855/1188513). 'FormatUserForms UFNewRequest' sendet ** die Standardinstanz **, was ** nicht unbedingt die Instanz ist, die gerade ausgeführt wird **. –
Nur aus Neugier, warum möchten Sie die Steuerelementeigenschaften in dem gespeicherten binären Stream des Formulars ändern? Sie dynamisch zu setzen fügt dem Formularladen sehr minimalen Aufwand hinzu und ist *** way *** flexibler und wartbarer, wenn Sie sich entscheiden, dass die TextBox-Hintergrundfarbe ein paar Nuancen heller sein soll. – Comintern