- ベストアンサー
GoToRecord の使い方
- 単票フォームにテーブル1のフィールド1が紐付いてテキストボックス(フィールド1)があり、もう一つテキストボックス(txt移動用)を作り、その値のレコードに移動するようにしたいのですが、実行時エラーが発生します。
- DoCmd.GoToRecordの引数にデータ型の不一致のエラーが発生します。フィールド1には数値が入っており、データ型も数値です。
- 修正すべき箇所はDoCmd.GoToRecordの引数にtxt移動用の値を数値に変換して渡すことです。
- みんなの回答 (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を使うべきです。それ以外の場面ではつかえません。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
> DoCmd.GoToRecord acDataForm, Me, acGoTo, Me.txt移動用.Value Meを具体的なオブジェクト名に変更するとどうなりますか?
お礼
Private Sub txt移動用_AfterUpdate() DoCmd.GoToRecord acDataForm, "テーブル1", acGoTo, Form_テーブル1.txt移動用.Value End Sub にしたら、出来ました! VBAでmeは使わない方が良いようですね!ありがとうございました。
お礼
ヘルプ確認しました。 仰る通り 「オブジェクトの有効な名前を文字列式で指定します。」と書いてありました。 Meがダメなのではなく、 Me.Nameにしないとダメなのですね。 ヘルプはよく読むようにします。ありがとうございました。