• ベストアンサー

サブフォームのsetfocus

ac2000/win2000 こんにちは。 以下のようにサブフォームのテキストボックスにsetfocusしようと思いコードを書きました。 Me.SF1.Form.コード.SetFocus Forms!コード更新F!SF1.Form!コード.SetFocus 2つ書いたんですが、2つともエラーはでないものの 移動することが出来ません。 どなたか宜しくお願いします。

  • niiza
  • お礼率43% (211/486)

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

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.2

以下の2行のコードで、ご希望のことが可能だと思います。 Me!SF1.SetFocus Me!SF1.Form!コード.SetFocus 以下、解説です。 SetFocus は、アクティブフォームのコントロールにしか実行できません。 (HELP で確認してください。) 例えば、メインフォームのコマンドボタンでコードを実行させた場合、メインフォームがアクティブフォームになります。 そのため、まず1行目のコードでサブフォームコントロールにフォーカスを移動してこちらをアクティブにしてから、再度サブフォームのコントロールに SetFocus する必要があります。

niiza
質問者

お礼

yoishoさん、ご返事有り難うございました。 お陰様で解決しました。

その他の回答 (1)

回答No.1

>Me.SF1.Form.コード.SetFocus これで大丈夫だと思います 「コード」 テキストボックスですか? 名前はあっていますか? 使用可能になっていますか?

niiza
質問者

お礼

ご返事有り難うございました。

関連するQ&A

  • サブフォームのサブフォームの値を参照

    Access2007で親フォームAの中にサブフォームBが入っていて、そのサブフォームBの中にサブフォームCが入っているとします。 この場合、親フォームAからサブフォームCの中のテキストボックスの内容等は参照できないのでしょうか? 一応試しに、親フォームから Me!サブフォームB.Form!サブフォームC.From!テキスト.SetFocus と、ソースに書いたのですが「実行エラー:438」が出てしまいます。 どうにかして参照できないでしょうか? ご存じの方がいらっしゃったらご教授お願いします。

  • GoToRecordでサブフォームを指定したい

    Fフォームの中にSF詳細という名前のサブフォームを埋め込んでいます。 このサブフォームに対して、 指定したレコードに移動したいのですが DoCmd.GoToRecord acDataForm, Form_SF詳細, acGoTo, 3 DoCmd.GoToRecord acDataForm, Forms("Fフォーム").Controls("SF詳細").Form, acGoTo, 3 DoCmd.GoToRecord acDataForm, "SF詳細", acGoTo, 3 全部エラーになり、うまくいきません。 正しい記述の仕方を教えてください。

  • Accessサブフォームのレコード移動

    Accessにおいて、サブフォームのレコードの移動方法をどなたか教えてもらえませんか。「Forms![メインフォーム名]![サブフォーム名].Form.SetFocus DoCmd.GoToRecord acDataForm, "サブフォーム名", acNext」とコーディングしたのですがダメでした。よろしくお願い致します。

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

  • サブフォームのプロシージャーの呼び出し方

    Access2010です。 別フォームの、サブフォームのプロシージャーの呼び出し方が分かりません。 呼び出すフォーム名 メイン サブフォーム名 メインSF プロシージャー名 取り込み4 です 以下のようにやってみましたが、エラーになってしまいます。 Call Forms_メイン_メインSF.Form.取り込み4 よろしくお願いします

  • サブフォームのレコード移動

    以下のように2つのサブフォームを親フォームより指定しています。 この場合だとかならずSetFocusしなくてはならなく そのたびに画面がぶれてしまいます。 Me.[1つ目のサブフォーム].SetFocus DoCmd.GoToRecord , , acGoTo, num Me.[2つ目のサブフォーム].SetFocus DoCmd.GoToRecord , , acGoTo, num 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 こちらを参考にしました。 よろしくお願いします。

  • 【ACCESS2003】サブフォーム名を変数に入れたい

    ACCESS2003で開発しています。 ひとつのフォーム(Form1)にサブフォームを10個(SubForm01からSubForm10まで)配置しており、そのフォーム内のボタンで1つのサブフォームを切り替え表示するようにしています。 サブフォーム部分だけがページ遷移しているように見えるような感じのことしたいので、こんな面倒なことをやっています。 各サブフォームの処理は全く一緒なのですが、サブフォームが10個もある為に同じ処理をForm1に10まとまり書かないといけないので、サブフォームの名前を変数にできないかなと考えていますがやり方がわかりません。 下記ソースで色々試してみたのですが、だめでした。 具体的にはサブフォーム(SubForm01~SubForm10まで)のテキストボックス(txtBox1~txtBox30)に順に値を入れたいということです。 教えてください。 Dim strPageCnt As String 'サブフォームの番号 '(処理省略)ここでstrPageCntに01から10までのいずれかの値を放り込んでいます。 For i = 1 To rs.RecordCount 'レコードセット最大値までループ '↓ここでサブフォーム名を変数に入れる    strSubForm = frmLOT31010_SubForm & strPageCnt '↓この方法もだめ    Forms!Form1!strSubForm!txtBox(i).Value = rs("NO").Value    '↓この方法もだめ    Forms!Form1!SubForm("strPageCnt")!txtBox(i).Value = rs("NO").Value '↓これもだめ    Forms!Form1!SubForm(strPageCnt)!txtBox(i).Enable = False    '↓これもだめ Forms!Form1!SubForm(strPageCnt)!txtBox(i + 1).SetFocus next どのようにすればサブフォームの名前を変数に入れて、なおかつサブフォーム名を可変にし(ここで言うところのサブフォームの最後の数値を変えて)サブフォームが扱えるようになりますか? 教えてください。よろしくお願いいたします。

  • Accessのサブフォームについて

    Accessのサブフォームのテキストボックスをクリックするとメインフォームのテキストボックスにサブフォームのテキストボックスの値を反映させるために以下のロジックを組み込んだ所エラーが発生してしまいました。 調べてみても分かりませんでしたので解決方法が分かる方は教えて下さい。 よろしくお願いします。 ロジック Form!メインフォーム!テキストボックス=サブフォームのテキストボックス エラー 「指定した式で参照されている’メインフォーム’フィールドが見つかりません」 「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」

  • AccessVBAでサブフォームの値チェック

    こんにちは。前々回http://okwave.jp/qa/q6556906.htmlにて 質問させて頂いたサブフォームの値チェックをする際のVBAの記述で 教えて頂きたい事ができましたので、質問させて頂きます。 Accessのバージョンは2003です。 以下のようなVBAを記述しているのですが、一度VBAでの処理を実行すると フォームを一度閉じてから再度フォームを開くと該当フィールドの色が 元に戻らず黄色又はマゼンダのままとなってしまっています… 別のAccessにて動作確認した際は、再度フォームを開いてもフィールドの 色は元のままだったのですが… どこが原因なのか教えていただければ幸いです。 長文で見辛いですが宜しくお願いします。 Dim stDocName As String Dim stLinkCriteria As String 'フォーム上のコントロールを格納する変数 Dim ctrl As Control Dim msg As String 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Me.Controls '取得したコントロールがテキストボックスかどうか If ctrl.ControlType = acTextBox Then 'Aの値が15.5未満の場合 If Forms![F_親フォーム].[F_サブフォーム].Form.[A] <= 15.5 Then '背景をピンクに Forms![F_親フォーム].[F_サブフォーム].Form.[A].BackColor = vbMagenta Else '背景を黄色に Forms![F_親フォーム].[F_サブフォーム].Form.[A].BackColor = vbYellow End If 'Bの値が45未満の場合 If Forms![F_親フォーム].[F_サブフォーム].Form.[B] <= 45 Then '背景をピンクに Forms![F_親フォーム].[F_サブフォーム].Form.[B].BackColor = vbMagenta Else '背景を黄色に Forms![F_親フォーム].[F_サブフォーム].Form.[B].BackColor = vbYellow End If End If Next ctrl Me.Undo 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Forms![F_親フォーム].[F_サブフォーム].Form.Controls 'テキストボックスのコントロールを取得 If TypeOf ctrl Is TextBox Then '取得したコントロールが黄色だった場合 If ctrl.BackColor = vbYellow Then 'msgにテキストボックスの名前を追加 msg = msg & ctrl.Name & vbCrLf 'メッセージボックスに名前を表示 End If End If Next ctrl 'msgが空白じゃない場合 If msg <> "" Then 'メッセージボックスを表示 MsgBox msg Else 'ctrl.BackColor = vbWhite stDocName = "F_フォーム1" DoCmd.Close acForm, Me.Name DoCmd.OpenForm stDocName End If Exit_閉じる_Click: Exit Sub Err_閉じる_Click: MsgBox Err.Description Resume Exit_閉じる_Click End Sub