ACCESS2010を使用です
<現状>
フォーム上にコンボボックスを設置し、「集合ソース」に1月;2月;3月;・・・12月と設定しており
下記コードで動作しております。
Private Sub 月割_AfterUpdate()
With CodeContextObject
.月割金額 = DLookup("[金額]", "Q_金額表", "[Q_金額表]![月]=[月割]")
End With
End Sub
新たに新料金設定が必要となりYes/No型のチェックボックスを設けて下記のように記述
しましたが、”If ([フォーム1]![チェック460] = True) Then”の箇所でエラーとなります。
どこが間違っているのか分かりません。
教えていただけないでしょうか?
Private Sub 月割_AfterUpdate()
If ([フォーム1]![チェック460] = True) Then
With CodeContextObject
.月割金額 = DLookup("[金額]", "Q_金額表", "[Q_金額表]![月]=[月割]")
End With
End If
If ([フォーム1]![チェック460] = False) Then
With CodeContextObject
.月割金額 = DLookup("[金額]", "Q_金額表NEW", "[Q_金額表NEW]![月]=[月割]")
End With
End If
End Sub
宜しくお願いします。
回答の前に、
このコードで、正しい結果になってますか。
コンボボックスを参照していないので、コンボボックスとは無関係の値になると思いますが?
一度、確認してみてください。
回答はそれからです。
なぜ
CodeContextObject
を使っているのかわからないってだけでCodeContextObject
はMe
と同等なんじゃないですかねどこにコードを書いているかがないんでアレですが、まぁ動いてるんだろうなとは思ってます
私が疑問に思ったのは "[Q_金額表]![月]=[月割]" の部分で、この抽出条件では、コンボボックスの値を反映しないからです。ここに、この条件式を入れる意味はほとんど無意味。
質問から、コンボボックスで選択した値で抽出したいのだと読めますので。
Q_金額表 の中でフォーム上のコンボボックスを参照しているのなら正常に動く可能性はあります。
あぁすみません。そうですね
なんかボケてたみたいです
ありがとうございます。
正常に動作しております。
説明不足で申し訳ありませんでした。
フォーム上に「年齢欄」があります
クエリ"Q_金額表"でフォーム上の「年齢欄」を参照して年齢のフィルターを掛けています。
宜しくお願い致します。
正常に動作しているなら、下記でいいかと。
ちょっと解説すると、
[フォーム1]![チェック460] ではフォーム上のコントロールを参照できないのでエラーになります。
Forms![フォーム1]![チェック460] とする必要があります。こうすればエラーになくなります。
コードが記述してあるフォーム(オブジェクト)は Me で参照できますので、Me!チェック460 と記述することもできます。
CodeContextObject はコードが実行されているオブジェクトという意味ですのでこれでもOKです。でも、長いので Me の方が楽ですよね。
hatena 様
ありがとうございました。
思う通り動作できました。
Meでの記述に変更致しました。
たいへん助かりました。