これは私が提出した以前のものとは別の問題です。Access Combobox with Withステートメントでオブジェクトが必要です
私は、フォームの数値IDフィールドをチェックするコードで作業しようとしています(レコードセットは複雑な結合のクエリから生成されます)。フォームにバインドされていませんが値のコンボボックスと比較しますフォームの数値IDに基づいて、クエリからコンボボックスを入力します。 コンボボックスのクエリには、IDフィールドが非表示の「Name」と「ID」という2つの列がバインドされています。
コードを実行しようとすると "Object Required"エラーが発生しており、デバッグにはすべてを試しました。奇妙なことです:デバッグ中に、コードの各行は必要な値を返す/含んでいるため、Accessはコンボボックスを有効なオブジェクトとして見ていますが、引き続きエラーを返します。コードで
最初のショット:
Dim ParID
Dim i as Integer
ParID = Me.ParentID.Value
With Combo217
For i = 0 To .ListCount - 1
If .Column(1, i).Value = ParID Then
.Value = .ItemData(i)
Exit For
End If
Next
End With
これは
を動作しませんでしたので、私は変数にコンボボックスを置くと、コンボボックスとして、具体的にそれを宣言してみました:
Private Sub Command223_Click()
Dim ParID
Dim Combo As ComboBox
Set Combo = Combo217
ParID = Me.ParentID.Value
With Combo
For i = 0 To Combo.ListCount - 1
If .Column(1, i).Value = ParID Then
.Value = .ItemData(i)
Exit For
End If
Next
End With
End Sub
再度同じエラー
最後に、私はコンボボックスを明示的に宣言しようとしました彼はそれから発信さだと形成:
.Value = .ItemData(i)
:
Private Sub Command223_Click()
Dim ParID
Dim Combo As ComboBox
Set Combo = Forms!DT2!Combo217
ParID = Me.ParentID.Value
With Combo
For i = 0 To Combo.ListCount - 1
If .Column(1, i).Value = ParID Then
.Value = .ItemData(i)
Exit For
End If
Next
End With
End Sub
任意およびすべてのウィンドウとデバッグプリントを見てループがコンボボックスの値を見ても、このラインで正しい選択を割り当てていることを私に言っておきます
しかし
ああをエラーし続け、それが不満だ線である:
If .Column(1, i).Value = ParID Then
することによってステッピング:だからここに新しい、完全に動作するコードです
それは、行の各項目のすべての値をチェックしましたか?例えば; 'i'は正しい行番号を保持していますか? '.Value'値は正しいですか? 'ParID'と同じですか? – David
'i'は正しい行番号を保持し、' .Value 'は正しい値を含み、 'ParID'は実際に割り当てられた正しい数値IDを含みますが、 。 – mattlore