Access2010 SetFocusが当たらない
- 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 よろしくお願いいたします。
- door_to_tomorrow
- お礼率93% (40/43)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Me.txtテキスト.SetFocus を Me.詳細.Controls("txtテキスト").SetFocus にしてください。ただし、フォーカスは 先頭行の「txtテキスト」にあたります。 わからないことがあれば、補足してください。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
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)がエラー表示されます。 各イベントの発生のタイミング、連鎖、終了等の理解が不足していて、その理由がよく分かりません。どなたか教えていただけないでしょうか。よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- どこにもフォーカスを当てたくない
フォームを開いたとき、どこにもフォーカスを当てたくないです。 アクセス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住所のあとにスペースをいれないと、構文エラーになるのですが、スペースが必要なのはなぜでしょうか??
- ベストアンサー
- Visual Basic
- 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で強制終了させなくてはいけなくなります。 対処方法を教えて下さい。
- ベストアンサー
- Visual Basic
- 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 以上、よろしくお願いします。
- 締切済み
- オフィス系ソフト