2016-05-16 23 views
0

同じユーザーフォーム上にテキストボックスを作成するためにテーブル内の値を検索するコンボボックスを持つユーザーフォームがあります。コードが動作しています。それは望ましい結果を生成し、フォームデータはテーブルに正確に保存されますが、MsgBoxを "Saved"にする代わりにエラー1004 'ワークシート関数クラスのVLookupプロパティを取得できません。私は強調表示された行は、Me.men10.Value = Application.WorksheetFunction.VLookup(rec1, rRange, 47, 0)Excel VBAコンボボックスの選択に基づくルックアップテーブルの値原因エラー

でデバッグする場合、それは全体だで これは、Subプロシージャです:

Private Sub men8_Change() 
Dim rec1 As String 
Dim rRange As Range 
Set rRange = Sheets("Recipe Box").Range("tblRecipes") 

rec1 = Me.men8.Value 
Me.men10.Value = Application.WorksheetFunction.VLookup(rec1, rRange, 47, 0) 

End Sub 

私は、フォーム上のこれらの4を持っていると私が言ったように、すべてのものは、それが必要として動作しますが、まだ結果エラーが発生しました。助言がありますか?私はどこでも検索しましたが、作業コードのエラーに関連するものは見つかりませんでした。

フォームコントロールのスニペットを示します。丸で囲まれたテキストボックス(men10)は、その上のコンボボックス(men8)から取り込まれます。

+0

値がテーブルに存在しない、47個の列は、あなたがこのことから#N/Aのetcを得ることはありません?がある。 –

答えて

0

私は場合は、エラーが発生し、これを複製することができた: - それは、一致を見つけることができません

  • 。私のシナリオでは、大文字小文字は心配していませんでしたが、一致するものがない場合は、エラーが表示されます。名前付き範囲の最初の列に完全一致が得られていることを手動で確認します。
  • 指定した範囲の列数よりも大きい列番号を指定した場合。値1は厳密にはワークシートの列Aを意味するのではなく、名前付き範囲の最初の列を表します(つまり、範囲が "C5:L200"の場合、Arg3の値1(col_index_num)はcolumnワークシートのCが。
+0

は回答ありがとうございました。私は実際にそれを「だと思います」私はこの問題を発見したばかりですが、この問題はフォームを完成させてデータを保存するコードには存在しませんでしたが、次のレコードを受け入れるためにフォームをリフレッシュしていたところです。コンボボックスの場合、フォームをリフレッシュするときにコードが値を探していたようですが、問題を解決したようなif文を追加するために上記のコードを変更しました。なぜこれがそうだと誰が説明しますか? – Maggiekm

関連する問題