2017-02-13 14 views
0

サブフォーム付きのタブコントロールを持つメインフォームがあります。vbaサブフォームのその他の条件がある場合は

「テキストボックス1」が

空の場合、「テキストボックス1」をチェック

  • 空でない場合はチェックを
    • :最初のタブまたはサブフォームで私がしなければならない「チェックボックス1」を、持っていますコードは直接 "サブフォーム1"のクラスオブジェクトに入れられます。そのため私はMeを使用できると考えました。あなたが割り当てることができません:私は

      実行時エラー「2448」を取得していますそのようにここで

      は私のコードですが、私は常にエラーメッセージ:(

      Private Sub Ctltextbox_1_AfterUpdate() 
          If Len(Ctltextbox_1.Value) = 0 Then 
           Me.checkbox_1.Value = 0 
          Else 
           Me.checkbox_1.Value = -1 
          End If 
      End Sub 
      

      を取得しますこのオブジェクトの値。Me.checkbox_1.Value-1を割り当てようと行で

  • +0

    エラーメッセージは表示されます。それが私たちを助けるかもしれません。また、サブフォーム自体を常に明示的に参照することもできます。 –

    +0

    あなたが必要なものは明確ではありません。テキストボックスが空でない場合はチェックボックスをオンにし、テキストボックスが空の場合はチェックを外します。 –

    +0

    「今すぐ」と表示されます。このオブジェクトに値を代入することはできません。常に "Me.checkbox_1.Value = -1"でデバッグします。 – Karen

    答えて

    0

    これを試してください。それは私のために働いています。 Ctltextbox_1_Changeアクションに移動しました。これは、変更されたときはいつでも関数を呼び出し、ボックス内に何も持っていないときにキャッチします。あなたの値をTrueとFalseに変更しました。

    これを試してお知らせください。

    Private Sub Ctltextbox_1_Change() 
        If Len(frmSub.Ctltextbox_1.Value) = 0 Then 
         frmSub.CheckBox_1.Value = False 
        Else 
         frmSub.CheckBox_1.Value = True 
        End If 
    End Sub 
    

    以下のように1行で解決することもできます。

    Private Sub Ctltextbox_1_Change() 
        frmSub.CheckBox_1.Value = IIf((Len(frmSub.Ctltextbox_1.Value) = 0), False, True) 
    End Sub 
    
    +0

    これは1行で行うことができます。さらに、nullは重要です。 – Fionnuala

    +0

    "複数のフォームを開いているときに" Me "を使用しても機能しないことがあります。 – Fionnuala

    +0

    さらに簡単な方法があります:)また、変更が最善の策ではないかもしれません。 – Fionnuala

    0

    いいえ、簡単な答えは、数値フィールドではない表現Len()= 0を使用できません。だから、サブフォームのための私の作業のコードは以下のようになります。

    Private Sub Textbox1_AfterUpdate() 
    If IsNull(Textbox1.Value) = False Then 
        Me.checkbox1.Value = True 
    Else 
        Me.checkbox1.Value = False 
    End If 
    

    End Sub

    はあなたの助けありがとうございました! :)

    関連する問題