ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3950888 フォームでマクロ(レコード移動)発動後のカーソルの位置を先頭に指定したい!
質問者:nikomasa ACCESS マクロを組み込んだが・・・・。

会員番号
氏名
フリガナ
生年月日

住所
電話番号
入会日


上記のようにフォームが設定されていますが、
電話番号を入力すると、入会日をとばして
新しい新規レコード作成の画面に
飛ぶようにしたいのです。

予め行ったのは電話番号をデザインビューで右クリックしまして、
設定済のマクロ(アクション→レコードの移動,引数の上から三段目のレコード→新しいレコード)をプロパティにて更新後処理の欄にて取り込み、保存して再びフォーム画面から入力すると、飛ぶことは問題ないのですが、カーソルの位置までが電話番号のままになってしまっています。飛んだ後に"会員番号”の位置にカーソルをもっていくにはどのような設定方法が宜しいでしょうか?
困り度:
  • 困っています
質問投稿日時:
08/04/15 14:58
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.2 Q、VBAを使わずマクロで設定することは可能か?
A、可能です。

1、マクロで[キー送信]を選ぶ。
2、送出するキーに次の<新規移動><先頭へ>を指定する。

  ^({+}){HOME}

Private Sub 電話番号_AfterUpdate()
  SendKeys "^({+})", False
  SendKeys "{HOME}", False
End Sub

要は、このVBAをマクロにしただけです。

通常のAccessの操作でも{CTRL}{SHIFT}{+}で新規レコードに移動できます。
通常のAccessの操作でも{HOME}で先頭列に移動できます。

^-------->CTRLキー。
()------->SHIFTキー。
{+}------>+キー。
{HOME}--->HOMEキー。

という記述上の約束があります。
よって、マクロでも可能です。
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/04/17 11:01
この回答へのお礼^({+}){HOME}

早速貼り付けしました。
思うとおりに操作および修正が出来て大変助かっております。
ありがとうございました。

PS 
^(){+}{HOME}
じゃないんですね?(規則性そのものが知らないので余計な質問を差し上げてしまってスミマセン。)

回答

ANo.1 tab1:

会員番号__電話番号______入会日
_______1__1111-11-1111
_______2__2222-22-2222

これを基にした単票フォームですと

[入会日].[タブストップ]=いいえ

だけでレコード移動すると思います。
(もちろん、新しいレコードへは移動しませんが・・・)
(遡り訂正を考えれば、普通は、これでOK)

Private Sub Form_Current()
  Me.会員番号.SetFocus
End Sub

質問の件は、この1行で解決します。

なお、電話番号を入力すると新規レコードに移動は

Private Sub 電話番号_AfterUpdate()
  SendKeys "^({+})", False
End Sub

でも実現できます。

Private Sub 電話番号_AfterUpdate()
  SendKeys "^({+})", False
  SendKeys "^(+({HOME}))", False
End Sub

さらに、Me.会員番号.SetFocus を省いても SendKeys で先頭に移動させることも可です。
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/04/15 15:55
この回答への補足何だかたくさんのコメントで恐縮ですが、あらかじめ予定日にはDate()が入っているのです。それにより予定日をいじる必要はまったくないからこそ、【電話番号】にて右クリック→プロパティ→更新後処理で私が望む次の新規レコード入力画面の移動が必要なのです。それなのにあわせて【電話番号】にまで新規移動時にカーソルが飛んでしまうのを防ぎたいのです。

説明がなっていなかったようですが、これでご理解いただけますでしょうか?単票形式で順序良く入力→電話番号のところにくる→入力してTABキー→新規でかつ会員番号のところにカーソルが届く。

これが理想です。

後半のご回答は早速試しますが、これはVBAか何かですか?
あまり使ったことが無いのでよく判りません。

ということは、結論として、私のコメントにもありますが【新規レコード画面に飛ぶことは出来ても、電話番号に更新後処理(新規レコード作成byマクロ)を設定しまう以上、次に飛ぶ位置も電話番号となり、どうしても会員番号にカーソルを持ってくるにはVBAを使わずして設定することは出来ない】という結論で宜しいでしょうか?
この回答へのお礼この回答にお礼をつける(質問者のみ)