Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルタブ移動時にキャンセル
記事No171741
投稿日: 2017/03/07(Tue) 17:34
投稿者yon3
解決済: ON
OS:windows10
Access Version:2016

初めましての初心者なのですが、お伺いしたく投稿いたしました。

タブ1|タブ2|タブ3
            |
データ         |
            |
            |

のイメージでタブコントロールを付けてます。

タブ毎で単票形式で新規レコードを入力してまして
タブ1入力後にタブ2をクリックして移動してもらうつもりなのですが
タブ1が未入力の時にタブ2、またはタブ3に移動出来ないようにタブ移動時(クリック時)にエラー処理をかけたいのですが、表記の仕方が浮かびません。

キャンセルイベントが発生できれば楽なのですが、、、

記述方法のヒントで結構ですので、ご教授いただければと思います。
何卒よろしくお願いいたします。

if isnull(txt1) then
msgbox "未記入です"
'この部分に何を打つのか、、、、
  'イメージでいうと、me.[今のタブ名].setforcus

タイトルRe: タブ移動時にキャンセル
記事No171742
投稿日: 2017/03/08(Wed) 01:47
投稿者hatena
解決済: ON
タブコントロールのどのページが選択されているかは、Valueプロパティで決まります。
1ページめが選択されているときは、0
2ページめが選択されているときは、1
・・・
となります。
取得も設定も可能です。

また、タブ移動するときに発生するイベントは「変更時」です。
「クリック時」イベントも発生しますが、タブ以外の部分をクリックしても発生するし、
タブ上でクリックして、押したままタブ以外に移動してはなした場合も発生するので、
これは適切ではありません。

タブコントロール名が Tab1 として、

Private Sub Tab1_Change()
    If IsNull(Me.txt1) AND Me.Tab1.Value <> 0 Then
        Me.Tab1.value = 0
        Me.txt1.SetFocus
        MsgBox "txt1が未記入です。"
    End If
End Sub

タイトルRe^2: タブ移動時にキャンセル
記事No171743
投稿日: 2017/03/08(Wed) 12:14
投稿者yon3
解決済: ON
解決いたしました。

・現在のインデックスの取得、その後インデックスに指定
・イベント自体のキャンセル

上記内容で無理やりやろうと思ってたのですが

ご指示いただいた内容にて
ループ処理で該当インデックスを探して、そこに戻す

という方法にいたしました。

ありがとうございました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る