0

このコードは、合計とその合計のパーセンテージを計算し、そのパーセンテージをテキスト ボックスに表示することを目的としています。このコードは、フォームのボタンがクリックされたときに実行されますが、そのフォームのサブフォームに基づくデータを使用し、表示するテキスト ボックスはフォームにあります。フォームとサブフォームの両方がクラス リストで呼び出されるため、「Object Required」エラーが発生する理由がわかりません。

Private Sub cmdTest_Click()
'Initialisation
Dim TotalAmount As Integer 
Dim GiftAid As Integer
'Processing
   If AllForms!frmGiftAid!subfrmqryGiftAid!PaymentIncrement Is Not Null Then
       If AllForms!frmGiftAid!subfrmqryGiftAid!PaymentIncrement = "Monthly" Then
          TotalAmount = _
            (AllForms!frmGiftAid!subfrmqryGiftAid!PaymentAmountPerIncrement * 12)
       Else
          TotalAmount = _
            AllForms!frmGiftAid!subfrmqryGiftAid!PaymentAmountPerIncrement
       End If
   End If

   'Termination
   GiftAid = (TotalAmount * 0.25)
   AllForms!frmGiftAid!subfrmqryGiftAid!subfrmqryGiftAidtxtGiftAid = GiftAid
End Sub

エラーが発生する行は、サブフォームを参照する最初の行であるため、次のようになります。

AllForms!frmGiftAid!subfrmqryGiftAid!PaymentIncrement が Null でない場合

サブフォームを参照するためにコードのさまざまなバリエーションを使用してみました (「AllForms」の代わりに「Forms」を使用してサブフォームを参照するだけでなく、フォームではなくサブフォーム自体でそれを試し、さまざまなイベントでそうします。 On_Current() や On_Load() などですが、これまでのところ何も機能していません。

あなたが私に提供できるどんな助けも大歓迎です。

4

1 に答える 1

0

フォームのコード モジュールの Me で始まるサブフォーム、または Form の後にフォームの名前が続くサブフォームを参照します。次に、サブフォーム コントロールの名前 Form を取得して、含まれているオブジェクトを参照し、最後に、含まれているフォームのプロパティを参照します。

 Forms!frmGiftAid!subfrmqryGiftAid.Form!PaymentIncrement

または

 Me.subfrmqryGiftAid.Form.PaymentIncrement

含まれているフォームの名前ではなく、サブフォーム コントロールの名前を使用することが重要であることに注意してください。

このコードは親フォームで実行され、サブフォームでレコードを選択する必要があります。

If Not IsNull(Me.subfrmqryGiftAid.Form.PaymentIncrement) Then
   If Me.subfrmqryGiftAid.Form.PaymentIncrement = "Monthly" Then
      TotalAmount = _
        Me.subfrmqryGiftAid.Form.PaymentAmountPerIncrement * 12)
   Else
      TotalAmount = _
        Me.subfrmqryGiftAid.Form.PaymentAmountPerIncrement
   End If
End If
于 2012-08-09T12:09:50.007 に答える