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ランキング
-
「デスパレートな妻たち」6のエ...
-
【誰?】空耳俳優さんの名前教...
-
加藤剛さんの息子さん
-
レストランたべるなについて
-
黒人の名字にKIMが多の理由
-
韓国ドラマ オールイン
-
この中でどの服を着たメンバー...
-
トキメキ成均館スキャンダルに...
-
下アゴに特徴のある俳優さんの...
-
NHK鈴木京香版「君の名は」での...
-
ミス・マープルに登場した俳優...
-
ライフカードの新CMで後輩役の...
-
名前が知りたい女優さんの調べ...
-
深田恭子さんの書道について
-
『芸人の△△は、まるで芸人◯◯の...
-
pornhubの広告に出てくるこの女...
-
このAV女優さんの名前教えて下...
-
https://hvideos.net/19116.htm...
-
AV女優の名前を知りたいです
-
27時間どうなんだ? 大悟っての...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA ListViewサブアイテ...
-
アクセスで教えてください。 縦...
-
「デスパレートな妻たち」6のエ...
-
黒人の名字にKIMが多の理由
-
レストランたべるなについて
-
「*121」の番号について
-
サブカルチャーとかメインスト...
-
下アゴに特徴のある俳優さんの...
-
加藤剛さんの息子さん
-
クリミナル・マインドのゲスト...
-
2つのPCを行き来する
-
【誰?】空耳俳優さんの名前教...
-
指定レジストリキーのサブキー...
-
中国俳優さんだと思うのですが
-
韓国ドラマ オールイン
-
ペリカン便のCMで民部良子さ...
-
【Access】サブフォーム間のカ...
-
携帯用のサブアドについて
-
刑事貴族で、舘ひろしが使用し...
-
NHK鈴木京香版「君の名は」での...
おすすめ情報