Access2010 SetFocusが当たらない

このQ&Aのポイント
  • Access2010のVBAにて、あるフォームのテキストボックスにフォーカスを当てる方法について質問です。
  • フォームの詳細が非表示の状態で、ボタンクリックで詳細を表示し、テキストボックスにフォーカスを当てたいです。
  • 現在のコードでは、フォーカスが当たらない状態です。どうすればフォーカスを当てることができるでしょうか?
回答を見る
  • ベストアンサー

Access2010 SetFocusが当たらない

Access2010です。 VBAにて、あるフォームの、デザイン上、「詳細」の中に存在しているテキストボックスにSetFocusでフォーカスを当てようと思ってます。 1 フォームロード時、フォームの「詳細」は非表示(当然、テキストボックスも非表示) 2 ボタンクリック時、フォームの「詳細」を表示し、テキストボックスにフォーカスを当てる という動作をしているのですが、2でテキストボックスにフォーカスがフォーカスが当たりません。どうしたらフォーカスが当たるのでしょうか? 以下、コードです。 Private Sub Form_Open(Cancel As Integer) Me.詳細.Visible = False End Sub Private Sub cmdボタン_Click() Me.詳細.Visible = True 'テキストボックスにフォーカスを当てる Me.txtテキスト.SetFocus End Sub よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

Me.txtテキスト.SetFocus を Me.詳細.Controls("txtテキスト").SetFocus にしてください。ただし、フォーカスは 先頭行の「txtテキスト」にあたります。 わからないことがあれば、補足してください。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

Windows XP SP3 & Access2002 でも Access2010でも 提示されたので動きましたけど? Me.詳細.Visible = True のところからステップ実行されたら どうなりますか。

関連するQ&A

  • 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 こちらを参考にしました。 よろしくお願いします。

  • エクセルvbaでフレーム上のカレンダーコントロール

    エクセルvbaでユーザーフォームの中のフレーム上にカレンダーコントロール をデフォルト非表示で配置しています。ボタンをクリックするとカレンダを表示状態にして、 日付をクリックしたらその値をテキストボックスに表示してカレンダの 表示を消すというコードを作りました。以下がそのコードです。 Private Sub 表示ボタン_Click() cldCalendar.Visible = True cldCalendar.SetFocus End Sub Private Sub cldCalendar_Click() With cldCalendar テキストボックス1 = .Value テキストボックス1.SetFocus .Visible = False End With End Sub このコードだとカレンダーの日付をクリックしない限り、 ずっとカレンダは表示されたままになってしまいます。 カレンダからフォーカスが移った時非表示にしたいのですが、どうすればよいのでしょうか? また非表示にしたいのは、フォーム上の特定のオブジェクトをクリックしたときだけではなく、 フォーム上の何もない場所など、とにかくカレンダ以外のすべてにおいてクリックしたり、 フォーカスが移動したらカレンダを非表示にしたいのです。 注文が細かくて恐縮なのですが、どなたか詳しい方教えてください。

  • 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)がエラー表示されます。 各イベントの発生のタイミング、連鎖、終了等の理解が不足していて、その理由がよく分かりません。どなたか教えていただけないでしょうか。よろしくお願いします。

  • どこにもフォーカスを当てたくない

    フォームを開いたとき、どこにもフォーカスを当てたくないです。 アクセス2003です。 フォームにテキストボックスを1つ設置して、そのフォームを開くと フォーカスがテキストボックス上で、点滅しますが どこにもフォーカスを当てない方法あるのでしょうか? Private Sub Form_Open(Cancel As Integer) Me.詳細.SetFocus End Sub とするとコンパイルエラーになってしまいます。 不可能でしょうか?よろしくお願い致します。

  • ACCESS VBAで抽出条件の書き方

    フォームに、テキストボックス(名前「txt住所」)とコマンドボタン(名前「cmd開く」)を作成しています。 テキストボックスに入力した値と等しいレコードだけを、F_顧客フォームに表示するには以下のように書く。 とテキストに書いてありました。 Private Sub cmd開く_Click() DoCmd.OpenForm "f_顧客", , , "住所='" & Me!txt住所 & "'" End Sub ・・・質問があるのですが。 なぜMe!txt住所は、&(文字列連結演算子)で囲まないといけないのでしょうか?? そして、& Me!txt住所のあとにスペースをいれないと、構文エラーになるのですが、スペースが必要なのはなぜでしょうか??

  • Access 2重3重のポップアップフォームの場合

    Accessです。 フォームを3つ作りました。 フォーム1=「A] フォーム1=「B]>ポップアップ「はい」 作業ウインド固定「はい」 フォーム1=「C]>ポップアップ「はい」 作業ウインド固定「はい」 「A」が開くとき Private Sub Form_Open(Cancel As Integer) ____DoCmd.OpenForm "フォーム2", , , , , acHidden ____DoCmd.OpenForm "フォーム3", , , , , acHidden End Sub として 「A」にはボタンがあってクリックすると「B」が Visible=True になります。 Private Sub コマンド1_Click() ____Forms!フォーム2.Visible = True ____Forms!フォーム2.SetFocus End Sub さらに「B」にもボタンがあってクリックすると「C」が Visible=True になります。 Private Sub コマンド1_Click() ____Forms!フォーム3.Visible = True ____Forms!フォーム3.SetFocus End Sub 「C」が現れた後、マウスイベントがきかなくなります。 というより、閉じることもできなく、アクセス本体をCLT+ALT+DELで強制終了させなくてはいけなくなります。 対処方法を教えて下さい。

  • PickFolder アウトルックとアクセス連携

    アクセスのフォームに テキストボックスとコマンドボタンを置きました。 VBAでoutlookに参照設定をして、 Private Sub コマンド2_Click() Dim myNaSp As NameSpace Set myNaSp = GetNamespace("MAPI") Me.テキスト0.Value = myNaSp.PickFolder Set myNaSp = Nothing End Sub としました。 テキストボックスには、 Private Sub テキスト0_AfterUpdate() MsgBox Me.テキスト0.Value End Sub としました。 しかしoutlookのフォルダ名をPickFolderでテキストボックスに入れても テキストボックスの更新後処理のイベントは発動しません。 しかしテキストボックスにはちゃんとフォルダ名が入っています。 Private Sub テキスト0_Change() MsgBox Me.テキスト0.Value End Sub にしても同じです。 Private Sub コマンド2_Click() Me.テキスト0.Value = "aaa" End Sub にしてコマンドボタンをクリックすると、 Private Sub テキスト0_Change() MsgBox Me.テキスト0.Value End Sub は、発動します。 PickFolderでフォルダ名を選択して値をテキストボックスに入れても イベントを発動させる方法を教えてください。

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

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

  • Accessフォームで詳細内の任意の行へSetFocus

    お世話になります。 申し訳ありませんが教えてください。 Accessでフォームを作成しました。 Formload時でDataSourceを設定し、その後に 詳細(Detail)内で「●」マークのついているテキストに フォーカスを設定したいのです。 例えば全部で100行あり、画面上は10行しかみえず、 ●が40行目からあった場合は、40行目にジャンプして 見えるような動作を目標にしています。 イメージ的には、回して詳細内の指定テキストボックスに 「●」があったらフォーカスして抜けたい、ということです。 Private Sub Form_Load()   Dim sSql As String   Dim rsSetting As DAO.Recordset   Dim i As Integer   sSql = "select * from 設定マスタ"   Set rsSetting = CurrentDb.OpenRecordset(sSql)   ’マスタの条件に従い再クエリ(設定マスタデータ利用)   sSql = "SELECT ・・・"   Me.RecordSource = sSql   'はじめに●のある位置に移動する   (ここでループのようなことしたい)   for i = 0 to 詳細の件数     if チェックしている行数のテキストボックス.value = "●" then       テキストボックス.SetFocus       exit for     end if   next End Sub こんな感じです。 このくらいならできるだろう、とナメていたら、 ウィザードで作ったフォームの行をどう扱うのか 全く予想がつかない状態なのです。 調べたのですが、調べ方が悪いのか、期待するページが出てきません。 すみませんがよろしくお願いいたします。

  • 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 以上、よろしくお願いします。