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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
【エクセル】複数のTextBoxに共...
-
PowerpointVBAで指定のShapeオ...
-
ワードでの操作方法について、...
-
エクセル2000VBAでオブジェクト...
-
アクセスVBAのMe!と[ ]
-
エクセルVBAでセル番地を指定し...
-
ImageMagickでgif画像の一部が...
-
メルカリのメルカードで買い物...
-
Excelシート上のマクロを登録し...
-
VBAでループ内で使う変数名を可...
-
Pythonでgif画像が上手く作れない
-
こんなことてしますか??
-
Googleフォーム・複数人の申し...
-
「PC Helpsoft Driver Updated...
-
VBA SaveChanges 上書きされない
-
【Excel VBA】マクロボタンを表...
-
UWSC
-
VB.net(VB)で、フォームにExcel...
-
vba 空のデータをSplitする時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
Excel VBAでマウスの左クリック...
-
文字列で小数点以下の0を削除し...
-
【エクセルのマクロ】クリップ...
-
エクセルVBAでセル番地を指定し...
-
Excel2007 でのチェックボック...
-
Accessのフォーム上にエクセル...
-
日本語の文字化けを直す方法
-
エクセルのデータをwebフォーム...
-
現在アクティブになっているオ...
-
PowerpointVBAで指定のShapeオ...
-
コードでオブジェクトを最前面に
-
【エクセル】複数のTextBoxに共...
-
Imageコントロールにグラフを表...
-
ユーザーフォームのインポート...
-
Access からオブジェクトとして...
-
構造体の静的な初期化
-
Excel VBA でPictureBoxオブジ...
-
「SHDocVw」の意味
おすすめ情報