• 締切済み

VBAのGoToControl について

お世話になります。 フォームで値が入力されないで、フォーカスが移動したら メッセージを表示させ、そのテキストボックスに移動する というのを行いたいのですが表示させることは出来るのですが どうしても次のテキストボックスに移動してしまいます。 :この場合は次のテキストボックスに移動してしまいます DoCmd.GoToControl "テキスト1" :この場合だとForms!入力画面!物テキスト1という名前のフィールド はありませんとエラーになります。 DoCmd.GoToControl "Forms!入力画面!物テキスト1" 標準モジュールで記述し、テキスト1からフォーカスが離れるときに 呼び出しています。 よろしくお願い申し上げます。

  • kou99
  • お礼率35% (23/65)

みんなの回答

  • nattoku
  • ベストアンサー率100% (2/2)
回答No.2

当方、まったく同様の内容で悩んでおりました。 本件の「~という名前のフィールドはありません。」とエラーになる件は解決いたしませんが、  DoCmd.GoToControl "テキスト1" の代わりに、 SendKeys "+{TAB}" と入れることで、フォーカスの固定に成功しました。 参考になりましたら幸いです。

回答No.1

Access ですか? バージョンがわかりませんけど、 テキスト1の「フォーカス喪失時/Exit」イベントで Private Sub テキスト1_Exit(Cancel As Integer) If IsNull(テキスト1) Then MsgBox "入力してください", vbExclamation Cancel = True End If End Sub のようにすればよいと思います。

関連するQ&A

  • AccessVBA で月を2桁で入力させたい。

    質問します。 Access2000で日付をフォームから入力させます。 日付は月と日に別れています。その月フォームで「8」と入力するのではなく「08」と入力させたいのです。 (月はテキストボックスです。) そこで以下のようなVBAを書きました。 Private Sub 月_Exit Dim MM As Variant MM = Len(Me!月) If MM = Not 2 Then Msgbox "2桁で入力してください。" Docmd.GotoControl ("月") End if そうしたら、「8」といれても、「08」と入れても メッセージが表示されてしまいます。 さらにGotoControlが効いておらず、次の日付テキスト ボックスにフォーカスが移動してしまうのです。トホホ・・ こんな初歩的な質問でお恥ずかしいのですが・・・ 回答お待ちしております。

  • EXCEL2000 VBAにおいてユーザフォーム上での入力チェック

    ユーザフォーム上のテキストボックスに数字のみ入力するように制御したいのですが、英字が入力された場合、エラーメッセージを出した後、フォーカスをそのテキストボックスに戻したいのですが、うまくいかず、次のところにフォーカス移動してしまいます。どのようにすればいいか、ご教示願います。

  • エクセルVBA テキストボックスへのセットフォーカスについて

    エクセルVBAでユーザーフォーム内に配置されたテキストボックス への数値の入力時に、指定範囲内になければメッセージボックスで 規格外であることを警告し、その規格外が入力されたテキストボックス を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが どうすればよいのでしょうか? 自分で考えた構文です。 Private Sub TextBox1_AfterUpdate() Dim A As Single A = TextBox1.Text If A < 1.99 Or A > 3.00 Then MsgBox "規格外!!"     TextBox1.Text = "" TextBox1.SetFoucus End If Exit Sub End Sub これですと、次のテキストボックスにフォーカスが移動してしまいます。 次のテキストボックスにフォーカスを移動させずに、規格内の値が 入力されるまでフォーカスを移動させない方法を教えて下さい。 お願い致します。

  • エクセルVBAで困ってます。

    ユーザーフォームのテキストボックスで入力制限をしたいのですが、制限は桁とかではなく特定の数字です。そこでテキストボックスに入力後チェックをかけるコーディングをしてるつもりなのですがフォーカスが次のテキストボックスへ遷移してしまいます。フォーカスを自分自身へ戻せないものでしょうか。大変困っています宜しくお願いします。

  • Access VBA でのフォーム名の取り扱いについて

    お世話になります。 現在下記のようなコードをモジュールで組んでます。 フォームのテキストボックスに値を入力する。 Forms!入力.入力者 = "山田 太郎" Forms!入力.かな = "やまだ たろう" Forms!入力.性別 ="男" ここでForms!入力.入力者は繰り返し出てくるので、簡単にする ことは出来ないでしょうか? よろしくお願い申し上げます。

  • アクセスの入力モード

    質問させていただきます。 入力フォームで、保存ボタンを押したら新しい次のレコードへ移動します。その際指定した欄にカーソルが行くようにDoCmd.GoToControlを使用しています。 指定した欄には入力モードを「ひらがな」としているのですが、DoCmd.GoToControlで飛んだら「全角英数」となってしまいます。 普通にカーソルを移動した場合は設定通り「ひらがな」になるのですが、反映されなくなります。 原因がお分かりの方、宜しくお願い致します。

  • Accessの更新後処理で特定の条件を満たしている場合、フォーカスを移動させない方法

    テキストボックスの更新後処理で下記のような記述をし、 テキストボックスに1が入力された場合、エラーメッセージを表示した上で、 フォーカスを一度ボタンに移動した後、テキストボックスに移動しております。 SetFocusを二回記述している理由ですが、 フォーカス移動を抑止する為に、Me.テキストボックス.SetFocus のみを記述した所、次の場所にフォーカスが移動してしまい、 下記のように書くと元の場所にフォーカスが戻ってくる為です。 フォーカス喪失時(Exit)の場合、Cancelを使用すればフォーカスの移動を抑止できたのですが、 更新後処理(AfterUpdate)でSetFocusを2回書く以外に フォーカスを移動させない方法をご存知の方がいらっしゃいましたら アドバイスいただければと思います。 ★クラスモジュール Private Sub テキストボックス_AfterUpdate() Call CHECK_TEXT(Me, Me.テキストボックス.Value) End Sub ★標準モジュール Function CHECK_TEXT(MeForm As Form, text As String) If text = 1 Then MsgBox "エラー" MeForm.ボタン.SetFocus MeForm.テキストボックス.SetFocus End If End Function 以上、よろしくお願いします。

  • ACCESSのサブフォームからメインフォームへの移動

    お世話になります。 仕訳伝票の入力画面を作成しています。 仕訳登録フォームに サブフォームを2つあります。 うまく説明できないのでコーディングを記入しておきます。 これで仕訳登録フォームから仕訳登録サブ借方フォーム 仕訳登録サブ借方フォームから仕訳登録サブ貸方フォームへはカーソルが移動しますが 仕訳登録サブ貸方フォームから仕訳登録フォームへは移動してくれません マウスを使わずイベントで移動する方法はありますか メインフォーム 仕訳登録 Private Sub 目的_LostFocus() DoCmd.GoToControl "仕訳登録サブ借方" End Sub サブフォーム1 仕訳登録サブ借方 Private Sub 借方合計_Click() Forms!仕訳登録!借 = 合計 DoCmd.GoToControl "仕訳登録サブ貸方" End Sub サブフォーム2 仕訳登録サブ貸方 Private Sub 貸方合計_Click() Forms!仕訳登録!貸 = 合計 DoCmd.GoToControl "仕訳登録" End Sub 「カレントレコードに'仕訳登録'というフィールドはありません」とメッセージにになりますので Private Sub 貸方合計_Click() Forms!仕訳登録!貸 = 合計 DoCmd.GoToControl "Forms!仕訳登録!貸" End Sub 「カレントレコードに'Forms!仕訳登録!貸'というフィールドはありません」 とエラーメッセージになります。

  • エクセルVBAでの テキストボックス内の値検索について

    お世話になります。 早速質問致します。エクセルVBAでユーザーフォームへ配置された 各テキストボックスへ入力を忘れた箇所がある場合それを見つけ出し メッセージボックスで入力忘れを表示させ、さらに、その入力を忘れ てしまった空欄のテキストボックスにフォーカスを移動させたいので すが、どのように指令したら良いのでしょうか? ちなみにテキストボックスは15個設けています。それらを一度に 検索する方法がありましたら、アドバイスお願い致します。

  • テキストボックス入力後、警告メッセージを表示し、フォーカスを移動させない方法について

    テキストボックスの入力チェックを行うために下記のようなソースを記述しました。 下記を実行するとテキストボックスにどんな文字を入力してもメッセージボックスを表示し、 フォーカスが移動しない形となっております (厳密にはボタンにフォーカスが移動した後、テキストボックスにフォーカスを移動しています)。 これは Me.テキストボックス.SetFocus のみを記述した所、次の場所にフォーカスが移動してしまい、 下記のように書くとフォーカスが移動していないように見えるため、このようにしました。 ただこの記述はいささか強引な感じなので、これを改良したいと思っております。 2回フォーカスを移動させるのではなく、フォーカス移動を抑止する方法がベストと思いますが、 方法が分からなかったので、何かしらアドバイスをいただけれる方がいらっしゃいましたらよろしくお願いします。 【ソース】 Private Sub テキストボックス_AfterUpdate() MsgBox "エラー" Me.ボタン.SetFocus Me.テキストボックス.SetFocus End Sub 以上、よろしくお願いします。

専門家に質問してみよう