2017-07-12 4 views
0

現在、3つのチェックボックスを持つユーザーフォームを作成しました。これらのチェックボックスは、作成したモジュールをアクティブにします。ユーザーフォームのチェックボックスをオンにすると、チェックボックスをオンまたはオフにします。何かご意見は?チェックボックスをオンにしましたユーザーフォーム

+0

チェックボックスをオンにするとチェックボックスがオフになりますか? –

+0

あなたはフォームなどをアンロードしていますか?チェックボックスはデフォルトでチェックされたままです...何が欠けていますか? – braX

+0

あまりにも速くクリックした。 "広すぎ"を選んだが、 "あなたが何を求めているかわからない"を選ぶことを意味する。あなたは問題が何であるかを明確にするためにあなたの質問を編集する必要があります。なぜなら、今は非常に不明確ですからです。私たちの誰もあなたの画面を見ているのではなく、あなたが私たちに言わなければあなたがやっていることは*推測できません。 –

答えて

3

スプレッドシートが開かれている間は、Unload Meの代わりにMe.Hideがトリックを行いますが、一旦閉じてしまうと、スプレッドシートはこれ以上設定を記憶できなくなります。

スプレッドシートに設定を記憶させるには、閉じていても選択設定をどこかにキャプチャする必要があります。

「chkboxVal」という名前のシートを作成したとします。その後、データをOk_Clickイベント/プロシージャを通じて保存し、UserForm_Initialize()セクションからデータを取得することができます。

のコードは次のようになります。

Private Sub Ok_Click() 
    Dim ctrl As Control, i As Integer 
    For Each ctrl In UserForm1.Controls 
     If TypeName(ctrl) = "CheckBox" Then 
      i = i + 1 
      Sheets("chkboxVal").Cells(i, 1) = ctrl.Value 
     End If 
    Next 
    Unload Me 
End Sub 
Private Sub UserForm_Initialize() 
    Dim ctrl As Control, i As Integer 
    For Each ctrl In UserForm1.Controls 
     If TypeName(ctrl) = "CheckBox" Then 
      i = i + 1 
      ctrl.Value = Sheets("chkboxVal").Cells(i, 1) 
     End If 
    Next 
End Sub 

ます。また、ユーザーはそれを再表示することができないような方法で「chkboxVal」シートを非表示にしたい場合があります。その場合は、この行をモジュールに追加するだけです。

Sheets("chkboxVal").Visible = xlVeryHidden 
0

モジュールを呼び出す前に、「Unload Me」または「Unload Userform#」がないことを確認してください。これにより、ユーザーフォームがデフォルトにリセットされます。

各チェックボックスのデフォルト(チェックボックスとチェックボックスをオフ)を変更することもできます。ユーザーフォームを作成するときは、チェックボックスをクリックし、プロパティウィンドウでデフォルトとしてtrueまたはfalseに設定するかどうかを選択します。

+0

Meh。正しいかもしれない、間違っている可能性があります。誰も告げることはできません。質問はそれが立て続けに答えることはできません - どうして迷惑でしょうか? –

+0

これはどこにありますか? –

関連する問題