![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
2つのサブフォームがあり、サブフォーム間のカーソル移動を実現したいのですが、
意図した動作にならず、困っております。
その為、下記の条件を満たす動作をご教示いただける方がいらっしゃいましたら、
ご教示の程、よろしくお願いします。
【条件】
1. Form1_SUBのfield2でEnterキー押下時、同じ行のForm2_SUBのIDに移動したいです
(Form1_SUBの1行目のfield2でEnterキー押下時、
Form2_SUBの1行目のIDにカーソルを移動したいです。
下記のソースでは
Form2_SUBの最後のカーソル位置があった行のIDに遷移してしまいます)。
2. Form2_SUBのfield2でEnterキー押下時、次の行のForm1_SUBのIDに移動したいです
(Form2_SUBの1行目のfield2でEnterキー押下時、
Form1_SUBの2行目のIDにカーソルを移動したいです。
下記のソースでは
Form1_SUBの最後のカーソル位置があった行のIDに遷移してしまいます)。
【フォーム名】
親:OYAFORM
サブ:Form1_SUB(T1テーブルを連結した帳票フォームです。)
サブ:Form2_SUB(T2テーブルを連結した帳票フォームです。)
【テーブル名】
T1(ID, field1, field2)
T2(ID, field1, field2)
【F1_SUBのソース】
Private Sub field2_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
Forms!OYAFORM!Form2_SUB.SetFocus
Forms!OYAFORM!Form2_SUB.Form!ID.SetFocus
End If
End Sub
【F2_SUBのソース】
Private Sub field2_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
Forms!OYAFORM!Form1_SUB.SetFocus
Forms!OYAFORM!Form1_SUB.Form!ID.SetFocus
End If
End Sub
以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
チラッとやってみただけなので、おかしかったら修正していってください。
切り替えを親フォームを経由して行う方法となります。
【F1_SUBのソース】サブフォームコントロール名を「サブ1」とします
Private Sub field2_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn
KeyCode = 0
Call Me.Parent.Form1To2
End Select
End Sub
【F2_SUBのソース】サブフォームコントロール名を「サブ2」とします
Private Sub field2_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn
KeyCode = 0
Call Me.Parent.Form2To1
End Select
End Sub
【OYAFORMのソース】
Private Sub ChangeForm(ctlFrom As SubForm, ctlTo As SubForm, iAddPos As Integer)
Dim iFromPos As Long
With ctlFrom.Form
If (.NewRecord) Then
iFromPos = .Recordset.RecordCount
Else
iFromPos = .Recordset.AbsolutePosition
End If
End With
iFromPos = iFromPos + iAddPos
With ctlTo
.SetFocus
With .Form
If (iFromPos < .Recordset.RecordCount) Then
.Recordset.AbsolutePosition = iFromPos
Else
.Recordset.AddNew
End If
.ID.SetFocus
End With
End With
End Sub
Public Sub Form2To1()
Call ChangeForm(Me.サブ2, Me.サブ1, 1)
End Sub
Public Sub Form1To2()
Call ChangeForm(Me.サブ1, Me.サブ2, 0)
End Sub
※
Enterが押されたフォームは何行目を表示していたかを求め、
移行する時の+何行目を加算しておき、
以降先のレコード数により位置を指定するか、新規にいくか
で、最後にIDへフォーカス設定
※
IDの値が同じかどうかは見ていません。行だけ
※
サブ1, サブ2 は、OYAFORM に配置したサブフォームコントロールの名前です。
ご回答ありがとうございます。
意図した動作をしている事を確認しました。
ソースの中身についても一通り理解できたと思います。
なお、私は下記のように改造しましたが、特に問題なく動いているようでした。
1. 新規レコードは作らない。
2. 移動先のフィールド名は、サブフォーム毎に異なる。
3. 最後のサブフォームの最後の行では親フォームに戻ってくる。
4. 3つ以上のサブフォームに対応。
それと、IDの値を見ていない件ですが、
IDの同期は別途とっており、同じ行=同じIDとなるので、
その点については大丈夫です。
おかげで無事解決しました。
どうもありがとうございました。
以上、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA ListViewサブアイテ...
-
【Access】サブフォーム間のカ...
-
アクセスで教えてください。 縦...
-
「*121」の番号について
-
黒人の名字にKIMが多の理由
-
名前が知りたい女優さんの調べ...
-
女優
-
田村正和さんて外人の血が流れ...
-
吉本の芸人さん(ジャルジャル)...
-
このAV女優さんの名前教えて下...
-
AV女優の名前を知りたいです
-
どんぐりの背比べの反意ことわ...
-
女優名を教えて下さい
-
とあるオカマっぽい俳優(脇役...
-
時代劇の隠れた人気シーン
-
この女優名を教えて下さい。
-
広告などで見かけるこの女優さ...
-
「 字を間違えやすい 」 著名人...
-
消されたからもう1回!この女優...
-
ハーフ、クォーターの男性芸能人
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA ListViewサブアイテ...
-
「デスパレートな妻たち」6のエ...
-
「*121」の番号について
-
アクセスで教えてください。 縦...
-
黒人の名字にKIMが多の理由
-
レストランたべるなについて
-
ジュウレンジャー リメイク版キ...
-
指定レジストリキーのサブキー...
-
2つのPCを行き来する
-
下アゴに特徴のある俳優さんの...
-
【誰?】空耳俳優さんの名前教...
-
ドラマ「結婚できない男」に出...
-
加藤剛さんの息子さん
-
サブカルチャーとかメインスト...
-
サブメールアドレスについて
-
子どもの異年齢交流
-
中国俳優さんだと思うのですが
-
トキメキ成均館スキャンダルに...
-
2台のPCをLANで接続しています...
-
再現ドラマの「あえて」の吹き替え
おすすめ情報