2016-10-14 11 views
0

すべてのヘルプを読み、問題を解決できません。ランタイムエラー '91' - チェックボックスを参照するときにオブジェクト変数またはブロック変数が設定されていません

Outlook 2013でフォームを作成していて、特定の条件が満たされたときにフィールドの一部を表示したいと思います。このためにVBAコードを書き込もうとしていますが、エラーが発生しています。

これは私のコードです。

Sub AltSMSNumber() 

Dim CheckBox2 As CheckBox 
Dim TextBox2 As TextBox 
Dim Label2 As Label 

Set CheckBox2 = CheckBox2 
Set TextBox2 = TextBox2 
Set Label2 = Label2 

If CheckBox2.Value = False Then 

    Set TextBox2.Visible = True 
    Set Label2.Visible = True 

Else 

    Set TextBox2.Visible = False 
    Set Label2.Visible = False 


End If 

End Sub 

私は、デフォルトでtrueにフォームのチェックボックスを設定し、唯一のチェックボックスは、(偽)チェックされたときにTextBox2をとLabel2をが見えるようにしたいです。

私はすべての名前を調べました。これらはすべて、コードに記載されているとおり、すべての名前が付けられています。

If CheckBox2.Value = False Then オブジェクトが設定されていないと伝えます。

誰かが私のエラーを指摘できますか?

おかげ

答えて

0

は、問題はここにある:

Set CheckBox2 = CheckBox2 

あなたは変数を宣言して、自分自身にそれを設定することはできません。既存のチェックボックスをもう1つ割り当てようとしましたか?

ご使用の他の変数と同じ問題があります。たぶんあなたはVBAのチュートリアルを見てください。オンラインはたくさんあります。ユーザーフォームのコードウィンドウ内の

+0

私は推定CheckBox2Clickイベントハンドラを使用します.CheckBox2'とそれを参照するために使用される名前を変更します。また、テキストボックスに 'Set'を使用して、' Visible'プロパティのラベルを変更することは避けてください... – Dave

0

あなたのテキストボックスの名前を変更したり、これは動作するはずラベルしていない場合は...

Sub AltSMSNumber() 
If CheckBox2.Value = False Then 
    Set TextBox2.Visible = True 
    Set Label2.Visible = True 
Else 
    Set TextBox2.Visible = False 
    Set Label2.Visible = False 
End If 
End Sub 
0

あなたが参照Meキーワードでユーザーフォーム

は(それを使用するとそのメンバーを取得そのコントロールのようです)、単にドット(.)を入力して、その後、メンバー名

Sub AltSMSNumber() 
    With Me '<-- reference the userform 
     .TextBox2.Visible = Not .CheckBox2 
     .Label2.Visible = Not .CheckBox2 
    End With 
End Sub 

いますが、そのbehaviをしたい場合または「自動」のようにアスカーは `設定しCB2 = formNameフォームを使用する場合には、それは良くなると思います(フォームのCheckBox2要素への参照を設定しようとしていたことを

Private Sub CheckBox2_Click() 
    With Me '<-- reference the userform 
     .TextBox2.Visible = Not .CheckBox2 
     .Label2.Visible = Not .CheckBox2 
    End With 
End Sub 
+0

@ Lilliputian_83、どうしましたか? – user3598756

関連する問題