• ベストアンサー

Exitイベントから自分自身のコントロールにSetfocusしたい

KaoruNagisaの回答

  • ベストアンサー
回答No.1

MSAccess2000での開発経験は少ないですが、MSAccess97までなら全バージョンで 経験があります。Accessとは結構長いお付き合いです。 質問1>Exitイベントから自分自身にSetfocusする方法はありますか? 残念ながら無いはずです。 質問2>フォームを閉じるときはTB1_Exitをさせない方法はありますか? これも方法が無いはずです。 質問3>これらの問題はTB1の入力チェックをTB1_Exitでしていることが問題なのだと思うのですが、他にどういう方法がありますか?チェックさせるためのボタンを用意してそのClickイベントでチェックさせるしかないでしょうか。 そのとおりです。 なお、ヘルプを見ると各項目の BeforeUpdate イベントでチェック できるように見えますが、実際には Cancel を True にしても 素通りしてしまいますので、強制チェック機能として使用できません。 ※Access95まではヘルプどおりに使用できました。 よって、登録ボタンなどや、 連結フォームでの レコードの BeforeUpdate イベントでチェックするしか方法はありません。 以上

snoopy64
質問者

お礼

回答ありがとうございます。 経験の長い方からの回答で、大変参考になりました。 やはり思った通り、できないんですね・・・そうだとは思ったんですが残念。 「連結フォームでのレコードのBeforeUpdate」は???ですが、全部の入力が済んでからチェック用のボタンを押し、その中で判定させることにしました。 明日さっそくそのようにやってみます。 どうもありがとうございました。

関連するQ&A

  • エクセルVBAのテキストボック、Exitイベント

    エクセルのVBAで簡単なデータ登録のマクロを作成しています。 フォームのテキストボックスに入力した値を、エクセルシートに展開する程度の機能です。 製品コードを必須にしており、製品コードが入っていない時はエラーメッセージを表示します。 製品コードが入力されていないときは、製品コードのテキストボックスにフォーカスがあたったままにしたく、ネットで調べてExitイベントに以下の処理を作成しました。 Private Sub mySeiCD_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim myMsgBoxValue As String If Len(mySeiCD.Value) = 0 Then myMsgBoxValue = MsgBox("製品コードは入力必須です。" ,vbOKOnly, "製品コード未入力") Cancel = True End If End Sub 製品コード未入力の際にフォーカスはそのままになりましたが、フォームを閉じることができなくなりました。 閉じるボタンを押しても、Exitイベントにひっかかてしまいます。 当然の動きと思いますが、回避する方法はありませんでしょうか? Exitイベントを使わずに、SetFocus を使った場合は、どうしても、次のテキストボックスにフォーカスが移動してしまいました。 以上、長くなりましたが、よろしくお願い致します。

  • access setfocusについて

    いつもお世話になっております。 いろいろ調べたのですが行き詰っておりまして ご教授お願いします。 下記記述でsetfocusでエラーになってしまいます。 Private Sub コマンド_Click() If IsNull(Me.テキストボックスコントロール名) Then MsgBox "未入力です" Me.テキストボックスコントロール名.SetFocus End If テキストボックスの処理記述 End Sub https://www.moug.net/tech/acvba/0030005.html こちらを参考にしました。 よろしくお願いします。

  • ユーザーフォームのSetFocusが働かない?

    エクセルのユーザーフォームにtextboxが2つとCommandButtonが2つ配置しています。 textbox1に入力されるのを10以下に限定するため、それ以上の数字が入力されるとExit時にエラーを表示し、textbox1にフォーカスを戻したいのです。 ですが、以下のようにするとエラー時にはtextbox2も飛ばしてCommandButton1にフォーカスされます。 どのようにするのが正解なのでしょうか。 よろしくお願いします。 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If CInt(TextBox1.Text) > 10 Then MsgBox ("ダメ") TextBox1.SetFocus End If End Sub

  • イベントが発生しません・・・

    Excel VBAでの質問です。 フォーム上にコントロールはTextBox1つしかありません。 商品コードを入力させ、入力値より商品データを検索、編集させようと思います。 コードを入力しエンターキーを押しても、フォーカスの移動場所が無いためかExitイベントが発生しません。 閉じるボタン[×]でフォームを閉じると、Exitイベントは発生するようです。 入力後はフォームは閉じてもかまいませんが、イベントを発生させることはできるでしょうか。 どなたか教えてください。

  • Vba UserForm SetFocus

    ExcelのVbaでUserForm上に英単語のタイピング練習のソフトを作ろうとしていますが、うまくいきません。コントロールのイベントについての理解が不足しているのが分かりました。 ユーザフォーム上の複数のテキストボックス間のフォーカスの移動について教えて下さい。 UserForm1にテキストボックスを3つ、コマンドボタンを1つ配置しました。それぞれTextBox1、TextBox2、TextBox3、CommandButton1とします。 Private Sub CommandButton1_Click() TextBox3.SetFocus ・・・(1) End Sub Private Sub TextBox3_Enter() MsgBox "In TextBox3" TextBox2.SetFocus ・・・(2) End Sub 各TextBoxのTabStopプロパティは「True」、「TabIndex」は番号順になっています。 コマンドボタンのTabStopプロパティは「False」にしています。 フォームを表示し、コマンドボタンをクリックするとエラーが発生します。 (2)の実行の後(?)、(1)がエラー表示されます。 各イベントの発生のタイミング、連鎖、終了等の理解が不足していて、その理由がよく分かりません。どなたか教えていただけないでしょうか。よろしくお願いします。

  • [コンパイルエラー 修飾子が不正です]

    ユーザフォームに「ユーザ名」を入力します。  (1)テキストボックスの入力有無の確認  (2)ユーザ名の重複の確認 上記を実行させようとしているのですが、「コンパイルエラー 修飾子が不正です」が表示 されてしまいます。 にわか覚えのVBAでどうしたらよいか・・わかりません。 ご教授願います。。m(__)m。。 **********以下 '[登録ボタン]を押した時の処理 Private Sub user_touroku_button_Click()   ←★ここでエラー発生!! '------------------------------------------------- Dim check As Long '重複有無 Dim rowsCount As Long '表の現在行数 '必須項目のチェック(ユーザ名) If user_txt.Text = "" Then MsgBox "ユーザ(案件)名を入力してください。", vbExclamation, "入力エラー" user_txt.Text.SetFocus Exit Sub End If 'ユーザ名の重複チェック On Error Resume Next check = 0 check = WorksheetFunction.Match(user_txt.Text, Range("ユーザ一覧").Columns(5), 0) On Error GoTo 0 If check > 0 Then MsgBox "このユーザ(案件)名はすでに登録されています", vbExclamation, "重複エラー" user_txt.Text.SetFocus Exit Sub End If '----------------------------------------------------- よろしくお願いします。

  • AccessのエラーチェックでFキーcmdボタンから反映されない

    こんにちは! 質問なのですが、Accessの入力フォームでエラーチェックをかけてます。 「txtMsg」って名前のテキストボックスを1つ用意してエラーの内容を 反映させてます。チェックの内容ですが、Nullチェックと文字数チェック ・禁止文字チェックをかけてます。 >エラーはちゃんと反映します。SetFocusでカーソルをエラー個所に立て て修正します。ここからが問題なのですが、エラー個所を修正したママの 状態(修正個所にFocusがある状態)でFキーcmdボタンの「更新」ボタン を押してもテキストボックスにエラーが出たママなんです。 ちなみにFキーを使用できるようにcmdボタンを12個並べて使っております。 >状況 ・Fキーを使用して更新した場合のみエラー表示が消えない。 >たぶんfocusが移動してないからかな? >Me.事項.SetFocusのような作業が出来ない状況(現状の >txtBOXの「Enterキー入力動作」を「行を追加」にして >いる為)で、Fキーを使用しつつ更新出来るようにするには? ・クリックで「更新」ボタンを押すとちゃんと更新される。 ってわけで困ってます。 何かいい方法を知っていらしゃいましたらご教授願います。 '------------------必須項目の未入力チェック------------------- Me.txtMsg = "" If IsNull(Me.郵便番号) Or Me.郵便番号 = "" Then Me.txtMsg = "郵便番号データが未入力です。( ̄▽ ̄;)!!" Me.郵便番号.SetFocus Exit Sub End If '--------------------図版CD文字数チェック-------------------- strYbn = Len(Me.郵便番号) If strYbn <> 10 Then Me.txtMsg = "『〒000-0000』形式にして下さい! (´∞`)" Me.郵便番号.SetFocus Exit Sub End If

  • アクセス初心者です。

    一つのフォーム上に、一覧が参照できるlist_Userと非連結フォームがあります。list_Userフォームから、項目を選び、修正ボタンをクリックすると非連結フォームへ転記され、修正できるように作ったのですが、参照、更新、保守で〇、×を用いところ、非連結へ転記されるとき、〇×以外はきちんと転記されるのですが、〇の項目も×として入っていきます。どうすればそのままデータが入っていくのでしょうか? If (IsNull(Me.参照) Or Me.参照 = 0) And _ (IsNull(Me.更新) Or Me.更新 = 0) And _ (IsNull(Me.保守) Or Me.保守 = 0) Then MsgBox "参照・更新・保守が未設定です", vbCritical Me.参照.SetFocus Exit Sub End If 説明が分かりにくかったらすみません。宜しくお願い致します。

  • ExcelVBAのSetFocusとプロシージャーの呼び出しについてで

    ExcelVBAのSetFocusとプロシージャーの呼び出しについてです。 質問させて頂きます。 セルをSetFocusで選択することはできないのでしょうか? 同じブックの別々のユーザフォームからプロシージャーを呼びだすことはできないのでしょうか? ユーザフォーム1 sub mh() a=1 msgbox a End sub SUB A_clik() 呼び出し可能 mh            End sub ユーザフォーム2  Sub B_click() call mh    呼び出し不可能     End Sub Sub B_click() userform1.mh    呼び出し不可能     End Sub 呼び出しの指定の仕方がわかりません。 よろしくお願いします。

  • ACCESS

    現在以下のシステムを検討しています。 (1)ログインフォームと(2)トップフォーム(3)注文フォームが別々に存在しており、 (1)ログインフォームは  ・ログインID入力用のテキストボックスが一個  ・パスワード入力用のテキストボックスが一個  ・ログインボタンが1個  設置されています。 以下はログインボタンクリック時に動作するプログラムです。 Private Sub cmdLogIn_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "IDを入力してください" Me.txtID.SetFocus Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "パスワードを入力してください" Me.txtPass.SetFocus Exit Sub End If Res = DLookup("パスワード", "T顧客", _ "顧客ID='" & Replace(Me.txtID, "'", "''") & "'") If IsNull(Res) Then MsgBox "該当するIDはありません。正しいIDを入力してください。" Me.txtID.SetFocus Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "注文フォーム" '----ID,pass合致でフォームを開く。 Me.txtID = Me.txtID2 Me.txtPass = Me.txtPass2 DoCmd.Close acForm, "Fログイン" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical Me.txtPass.SetFocus End If End Sub (2)トップフォームは  商品のリストが画像付き(商品一個につき画像一個)  で示され、画像を押すと商品別に作成してある注文フォームに進むのですが、  ログイン完了していないとログインを促すメッセージが出て注文フォームが開かないよう  にしています。  トップフォームにはテキストボックスを2個不可視の状態で配置しております。  以下は商品画像に埋め込んであるコマンドです。 Private Sub 商品画像 1_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "ログインしてください" Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "ログインしてください" Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "商品名" '----ID,pass合致で注文フォームを開く。 End If End Sub   (3)注文フォームは  ・数量選択のコントロールボックス  ・注文ボタン  ・キャンセルボタン  を設置しています。 【以下が質問内容になります】 「ロフインフォーム」内の入力値(テキストボックスに入力されていたIDやパスワード値)を注文フォーム内のテキストボックスに取得させる(あるいは設定させる)にはどのようにすればよいのでしょうか? 注文フォームにはテキストボックス2個( ID入力用と Password入力用)を不可視で配置しています。こちらのテキストボックス2個については手動入力は行わず、注文フォームが開いた際にログイン時の ID, Paswordがテキストボックスの中に自動的に入力あるいは設定されるようにしたいのですが、どのようにすればよいかがわかりません。 因みにログイン ID,Passwordは複数セットあり、ユーザーがログイン完了後、注文フォームを閉じるまでの間は 同一のID, Paswordの内容を保持したいと考えています。 上記の中にID,Paswordを保持させるようなコードを入れることは可能でしょうか? 注文フォームを開く際のコードに何か入れることができるのではないかと考えていたの ですが、よい案が浮かびません。 他によいやり方などがあれば教えていただけますでしょうか? よろしくお願いします。