- ベストアンサー
AccessのCtrl+2の操作を自動化したい
標記の通りなのですが、直前のレコードを参照(?)するのにCtrl+2のショートカットを多用しています。 この操作をマクロなどで自動化したいのですが、これを実現できる方法をご教授下さい。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2の補足への回答として >私の勘違いかも知れませんがコントロールのフォーカス取得時のコードに・・ >やり方が間違っているのでしょうか? コントロールのフォーカス取得時ではなく更新後処理のイベントに記述します。フォーカス取得時では直前に入力した値をデフォルト値に出来ません。 直前に入力した値をそのコントロールのデフォルト値にセットさせる記述なのでフォーカス取得時に記述してもダメです。 例えば氏名というコントロールの更新後処理に Private Sub 氏名_AfterUpdate() Me![氏名].DefaultValue = "'" & Me![氏名] & "'" End Sub とすると氏名コントロールに入力された名前をそのままデフォルトにセットしますので新しいレコードに移った時にコントロールに直前に入力した値(名前)を代入します。 直前に入力した値が必要な全てのコントロールの更新後イベントに記述すれば各コントロールに各々直前に入力された値をデフォルト値として表示します。
その他の回答 (3)
- sanbit
- ベストアンサー率32% (16/50)
直前のレコードを参照(?)し入力することであれば 入力フォームにレコードの複製でコマンドボタンを作成することでいかがですか? ボタンを押すたびに、現フォームに表示されているレコード(直前のレコードに限りません)を新規レコードに複写してくれます。 ご質問の趣旨と違っていたらごめんなさい。
補足
何かのアクションをして直前のレコードを取得するのであれば、Ctrl+2でよいのです。 そうではなくて、フォーカスを取得したときに自動で値を取得したかったのです。 自動で取得できればそのままエンターで飛ばせるので、大変効率が上がるのです。
- O_cyan
- ベストアンサー率59% (745/1260)
>フォームでの入力時・・ どの様な状態で使うのか解らなければ回答のしようがありません。 入力した直前のレコードをフォームの各コントロールに自動で取得するようにするなら各テキストボックスなどのコントロールの既定値に直前のレコードの各フィールド値を動的に代入すれば直前のレコードと同じ値をフォーム上に取得できます。 フォームの各コントロールの更新後処理のイベントにデータ型によって既定値をセットします。 テキスト型の場合 Me![コントロール名].DefaultValue = "'" & Me![コントロール名] & "'" 数値型の場合 Me![コントロール名].DefaultValue = Me![コントロール名] 日付/時刻型の場合 Me![日付].DefaultValue = "#" & Format(Me![日付], "yyyy/mm/dd") & "#" これでフォームで入力した値が既定値としてセットできるので新しいレコードに移った際にフォーム上に直前の値がコントロールにセットできます。 試してみてください。 フォームの起動時にも同様の処理をしたければフォームの開く時にDLastなどでテーブルの最終レコードを取得して各コントロールに代入すれば出来ます。 そこまでいらなければ各コントロールのセットのみで効率が上がると思いますが。(フォームを閉じた時にクリアになりますが) >Ctrl+Vは勿論知ってますが、Ctrl+2となんら変わらないじゃないですか ちなみに Ctrl+2やCtrl+7やCtrl+'等とCtrl+Vは同じではありません。
お礼
何度もありがとうございます。 結果として、この方法では問題の解決になりませんでした。 私の勘違いかも知れませんが、コントロールのフォーカス取得時のコードに教えていただいたコードを 入れてみましたが、オブジェクトがありませんと止まってしまいました。 やり方が間違っているのでしょうか? >>Ctrl+Vは勿論知ってますが、Ctrl+2となんら変わらないじゃないですか >ちなみに >Ctrl+2やCtrl+7やCtrl+'等とCtrl+Vは同じではありません。 おっしゃっている意味はわかります。 私が言いたかったのは操作方法としてCtrl+2とCtrl+Vは変わらないですねという意味です。 操作の結果が一緒だという意味ではありません。
- O_cyan
- ベストアンサー率59% (745/1260)
>Ctrl+2のショートカット >マクロなどで自動化したいのですが Ctrl+2のショートカットキーを使って直前のレコードの同フィールドの値をコピーするということですよね。 テーブル上で使うという事なのでしょうか? レコード単位にコピーしたいのならテーブルのレコードセレクタをクリックしてCtrl+Cでコピー、コピーしたいレコードの位置のレコードセレクタをクリックしてCtrl+Vで出来ますが・・。その方が簡単。 マクロを作って同様の処理を別の事で使いたいという事なのでしょうか?
補足
フォームでの入力時にCtrl+2を繰り返し使うのです。 ですから、これがフォーカス取得時やアクティブになった時に自動的にマクロなどで実行できれば オペレーションの効率が上がるのです。 Ctrl+Vは勿論知ってますが、Ctrl+2となんら変わらないじゃないですか。
お礼
何度もありがとうございます。 お陰さまで目的を実現する事が出来ました! ありがとうございました<m(_ _)m>