• ベストアンサー

アクセスVBAのエラーメッセージ

次のようなVBAを更新前のイベントとして書いたのですが、実行しようとすると「抽出条件のデータ型が一致してません」というエラーメッセージが出ます。 これは、どういう意味のエラーメッセージなのでしょうか? よろしくお願いいたします。 If IsNull(DLookup("作業日", "T交通費マスター", "作業日 ='" & Me!作業日 & "'")) Then Exit Sub End If

質問者が選んだベストアンサー

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.4

> Cancel = True > Me!作業日.SelStart = 0 > Me!作業日.sellenght = Len(Me!作業日) Cancel = True Me.Undo じゃダメですか?

その他の回答 (3)

回答No.3

「オブジェクトは、このプロパティーまたはメソッドをサポートしてません」は メッセージの通りです。「.SelLenght」をサポートしていないとか「作業日」がないとか 今回の場合テキストボックスは「.SelLenght」をサポートしていますので 「作業日」がおかしいと思われます。 ためしに同じコードを作ってみましたがキチンと動きますよ !が2バイト系(漢字の記号)になっていませんか?1バイト系文字ですよ ついでに「!」を「.」に変えるといいですよ Cancel = True Me.作業日.SelStart = 0 Me.作業日.SelLength = Len(Me.作業日) 今回は「ACCESS Sellength」で検索してみましたが、 結構Hitします。 専門書はありますがかなり高いですのでWeb検索を上手く使う事をオススメします。

asuka546
質問者

お礼

ご回答ありがとうございまいた。 結局、undoを使ったほうが利便性があったので、そちらにしました。 お礼が遅くなりまして申し訳ありませんでした。

回答No.2

評価する項目のデータ型が一致していないという事です。 テーブルのデザインビューなどで作業日とMe!作業日のデータ型を 確認してください。日付/時刻型とテキスト型になっていたりしませんか? "作業日 ='#" & Me!作業日 & "#'" に変えてみたらどうでしょうかね 未テストなので、参考までに

asuka546
質問者

お礼

ご回答ありがとうございました。 #1の方の方法でうまくいったので、この方法でうまくいくか確認してません。申し訳ありませんでした。 #1のお礼でも書いたのですが、その後またエラーメッセージが出てしまいました。 Me!作業日.sellenght = Len(Me!作業日) で「オブジェクトは、このプロパティーまたはメソッドをサポートしてません」というものです。 これは、使えないということでしょうか? またエラーメッセージを解説した本や、サイトはないものなのでしょうか?

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

作業日フィールドは、日付/時刻型でしょうか? それなら、DLookup 関数の第3引数は、 "作業日=#" & Me!作業日 & "#" とする必要があります。

asuka546
質問者

お礼

ご回答ありがとうございました。 うまくいきました。日付/時刻型はまたタイプが違うのですね。本から移したのでよくわかってないかったようです。 質問で書いた、VBAはうまくいったのですが、その後その下に書いていった。 '値が重複している時は更新をキャンセル MsgBox "すでに記入された日付です" Cancel = True Me!作業日.SelStart = 0 Me!作業日.sellenght = Len(Me!作業日) の最後の行 Me!作業日.sellenght = Len(Me!作業日) でまたもやエラーが出てしまいました。 「オブジェクトは、このプロパティーまたはメゾットをサポートしてません」というものです。 こちらはどういう意味なのでしょうか? またデバック前のエラーメッセージの意味がわからないのですが、それが解説した本、またはサイトというのはないものなのでしょうか? よろしくお願いいたします。

関連するQ&A