![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?e8efa67)
ACCESSの勉強をしています。temp = Me![氏名] その他がわかっていません。
わかりやすく教えていただけますか?
(1)下記のマクロにて、temp=Me![氏名]ではOK,
temp=DataTable![氏名]、temp=DataTable!氏名、temp=DataTable.氏名ではNG
この理由?
(2)下記のマクロにて、DoCmd.GoToControl "氏名"のラインが無くても正常に動きます。
これの理由?
基本情報:
テーブル名:「データテーブル」--フィールド「氏名」,「通番」を持つ
フォーム名:「DataTable」--「データテーブル」をソースとし、フィールド「氏名」,「通番」を持つ。
フォーム上のボタン名:「実行」(on click)
Private Sub 実行_Click()
DoCmd.GoToRecord acForm, "DataTable", acFirst
Do While [NewRecord] = False
DoCmd.GoToControl "氏名" '----このラインがなくても正常に動く
temp = Me![氏名]
' temp = DataTable![氏名]----これではうまく行かない
' temp = DataTable!氏名 -----これでもうまく行かない
' temp = DataTable.氏名 -----これでもうまく行かない
'うまく行くとは、tempにきちんとデータが取りこまれる。うまく行かないとは、 Object Requiredとしかられます。
Me![通番] = 1
DoCmd.GoToControl "氏名" '----このラインがなくても正常に動く
DoCmd.GoToRecord acForm, "DataTable", acNext
Loop
(マクロで何をやろうとしているかは意味がありませんので、無視してください)
End Sub
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
Rich53さんとともに、No.1575853で回答した者です。
(1)下記のマクロにて、
オブジェクト名を指定する場合(→「DataTable![氏名]」の場合)は、それがどの種類のオブジェクトであるかを明示する必要があります。
「DataTable!氏名」を「Forms!DataTable!氏名」と指定してやれば、問題は解消すると思います。
なお、Meを使用した場合は、そのイベントが起動したオブジェクト上で、指定されたコントロールを探すため、FormsやReportsといった指定は不要(無用)になります。また、その方が処理も速くなるそうです。
詳しくはヘルプを参照下さい。私のはその「うろ覚えの受け売り」なので(汗)
(2)下記のマクロにて、
特にコントロール移動を指定しない場合は、「タブストップ」がTrueに設定されたコントロールのうち、最も「タブ移動順」が早いものがフォーカスを受け取ります。
指定しなかったからと言って、エラーにはなりません。
但し、続く操作が、「貼付(Paste)」など、フォーカスを受けたコントロールに対してのものだった場合などは、話がかわります。
私がNo.1575853で出した例の場合も、サブフォームでレコード移動をさせるために、そのサブフォーム内のコントロールに移動させてから、オブジェクト指定なしでGoToRecordを実行させています。
(これは、私がサブフォームのレコード移動の方法を、他に知らないためです(汗))
No.2
- 回答日時:
(1)
Meプロパティは、そのコードを実行しているオブジェクトを参照します。
例えば、
Forms![フォーム名]
と同意です。
フォームを参照する場合はFormsオブジェクト、レポートを参照する場合はReportsオブジェクトの指定が必要です。
(2)
コードの実行に影響を与えないためです。
DoCmd.GoToControl "氏名"ではなく
Me![氏名].SetFocusを使用しましょう。
(ヘルプではSetFocusの使用を勧めています。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBAでフォームのコントロールの...
-
VBA エンターキーでイベントに...
-
Excel2007 でのチェックボック...
-
SelectObjectの戻り値
-
Bitmap.GetPixelより高速なもの
-
Accessのフォーム上にエクセル...
-
アクセス 名前のつけ方について。
-
文字列で小数点以下の0を削除し...
-
現在アクティブになっているオ...
-
Excel 終了マクロ
-
VBでエクセルのグラフを表示したい
-
pythonのメゾッドの整合性について
-
日本語の文字化けを直す方法
-
認識するイベントの範囲を制限...
-
【エクセル】複数のTextBoxに共...
-
ExcelのシートをAccessで表示し...
-
「ご処理進めて頂きますようお...
-
VBAでループ内で使う変数名を可...
-
Excelシート上のマクロを登録し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Excel VBAでマウスの左クリック...
-
エクセルVBAでセル番地を指定し...
-
【エクセルのマクロ】クリップ...
-
Accessのフォーム上にエクセル...
-
Excel2007 でのチェックボック...
-
日本語の文字化けを直す方法
-
文字列で小数点以下の0を削除し...
-
現在アクティブになっているオ...
-
エクセルのデータをwebフォーム...
-
Imageコントロールにグラフを表...
-
【エクセル】複数のTextBoxに共...
-
ユーザーフォームのインポート...
-
Access からオブジェクトとして...
-
PowerpointVBAで指定のShapeオ...
-
コードでオブジェクトを最前面に
-
VBAで選択範囲外の図形(オブジ...
-
クリスタルレポートのプレビュ...
-
Excel VBA でPictureBoxオブジ...
おすすめ情報