ユーザーフォームを開くボタンがクリックされるたびにコードを実行するのではなく、コードを1回実行するだけで済むように、ユーザーフォームを永続的に変更しようとしています。永久にユーザーフォームを変更する
これは一部の人には有効だとわかりました。私は何が間違っているのかわからない。
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
ありがとうございました!
それでは、どうしたのですか? –
そのコードがフォームのコードビハインドにある場合は、[UF]パラメータを削除し、[昨日のように](http://stackoverflow.com/a/42421855/1188513)の代わりに「Me」を使用してください。 'FormatUserForms UFNewRequest'は**デフォルトインスタンス**を送信しています。**は必ずしも現在実行中のインスタンスではありません**。 –
ちょうど好奇心から、フォームのストアドバイナリストリームのコントロールプロパティを変更したいのですか?それらを動的に設定すると、フォームの読み込みに最小限のオーバーヘッドが追加され、 'TextBox'バックグラウンドカラーをカップルシェードライターにする必要がある場合、***柔軟性と保守性が向上します。 – Comintern