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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レストランたべるなについて
-
Excel VBA ListViewサブアイテ...
-
2台のPCをLANで接続しています...
-
2つのPCを行き来する
-
数式3.0のツールバーが英語
-
めだかに出てる俳優の名前
-
名前が知りたい女優さんの調べ...
-
このAV女優さんの名前教えて下...
-
AV女優の名前を知りたいです
-
レミゼラブルが見たいのですが...
-
pornhubの広告に出てくるこの女...
-
ルーシー・ワイルド
-
名前をローマ字で書きたいので...
-
俳優の伊藤健太郎のちんこはで...
-
ハゲたピン芸人の名前を教えて...
-
時代劇の隠れた人気シーン
-
粗品は好きですか?
-
とあるオカマっぽい俳優(脇役...
-
粗品は頭おかしくなったのかな...
-
ダウンタウン松本の未成年と性...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA ListViewサブアイテ...
-
「デスパレートな妻たち」6のエ...
-
アクセスで教えてください。 縦...
-
レストランたべるなについて
-
「*121」の番号について
-
黒人の名字にKIMが多の理由
-
2つのPCを行き来する
-
【Access】サブフォーム間のカ...
-
ミス・マープルに登場した俳優...
-
指定レジストリキーのサブキー...
-
加藤剛さんの息子さん
-
2台のPCをLANで接続しています...
-
今日の「まんてん」で・・・・・・
-
韓国は、チャ・チャン・チョン???
-
pBluescript SK+の全塩基配列に...
-
ライフカードの新CMで後輩役の...
-
NHK鈴木京香版「君の名は」での...
-
再現ドラマの「あえて」の吹き替え
-
はじめまして! pcのデュアル画...
-
数式3.0のツールバーが英語
おすすめ情報