プロが教えるわが家の防犯対策術!

単票フォームにテーブル1のフィールド1が紐付いてテキストボックス(フィールド1)があり、
もう一つテキストボックス(txt移動用)を作り、
その値のレコードに移動するようにしたいのですが、

Private Sub txt移動用_AfterUpdate()
DoCmd.GoToRecord acDataForm, Me, acGoTo, Me.txt移動用.Value
End Sub

とすると、

"実行時エラー2498 指定した式は、
いずれか の引数とデータ型が対応していません。”

となってしまいます。

DoCmd.GoToRecord acDataForm,
Me, acGoTo, CLng(Me.txt移動用.Value)

にしても同じでした。
フィールド1には数値が入っていて、データ型も数値です。

どこを修正すればいいか教えてください。
(添付画像は、現在1レコード目で、2レコード目に移動しようとしているとこです)

「GoToRecord の使い方」の質問画像

A 回答 (2件)

> DoCmd.GoToRecord acDataForm, Me, acGoTo, Me.txt移動用.Value



GoToRecord のところをクリックしてF1キーを押してください。
GoToRecord メソッドのヘルプが開きます。

そこの説明で 第2引数の説明は下記のようになっています。

引数 objecttype で選択した種類のオブジェクトの有効な名前を文字列式で指定します。


ですので、ANo.1 の回答のように直接名前を指定してればいいことが分かります。
あるいは、

DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, Me.txt移動用.Value

とすればいいです。こちらだと、何かの都合でフォーム名を変更してもコードを変更する必要はありません。

あるいは、ヘルプの下記の部分に着目すれば、

引数 objecttype および objectname を指定しないと、objecttype に定数 acActiveDataObject (既定値) が使われ、アクティブ オブジェクトと見なされます。


DoCmd.GoToRecord , , acGoTo, Me.txt移動用.Value

と省略してもいいことが分かります。

ヘルプは十分に活用しましょう。

> VBAでmeは使わない方が良いようですね!

VBAでこそMeを使うべきです。それ以外の場面ではつかえません。
    • good
    • 0
この回答へのお礼

ヘルプ確認しました。

仰る通り
「オブジェクトの有効な名前を文字列式で指定します。」と書いてありました。

Meがダメなのではなく、
Me.Nameにしないとダメなのですね。

ヘルプはよく読むようにします。ありがとうございました。

お礼日時:2012/10/25 20:11

> DoCmd.GoToRecord acDataForm, Me, acGoTo, Me.txt移動用.Value


Meを具体的なオブジェクト名に変更するとどうなりますか?
    • good
    • 0
この回答へのお礼

Private Sub txt移動用_AfterUpdate()
DoCmd.GoToRecord acDataForm, "テーブル1", acGoTo, Form_テーブル1.txt移動用.Value
End Sub

にしたら、出来ました!

VBAでmeは使わない方が良いようですね!ありがとうございました。

お礼日時:2012/10/24 23:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!