• ベストアンサー

access テキストボックスをクリックして 可視=false にするには

よろしくお願いします。 かるた取り(百人一首)のゲームを作っています。 下の句のテキストボックス(かるた0~かるた99)を画面に配置しました。 上の句を表示して、これに合った下の句のテキストボックスをクリックしたときにこのボックスを画面から消し去るにはどうすればよいのでしょうか Private Sub かるた0_Click() If かるた0 = 中句 Then かるた0.Visible = False カードめくり Else MsgBox ("お手つき") End If End Sub としましたが、以下のようなエラーメッセージです。 「コントロールがフォーカスのときはコントロールを非表示にすることは出来ません」 カーソルを移動すればよいと思うのですが、コーディングで移動する方法を教えてください。

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

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

Me.コマンド0.SetFocus かるた0.Visible = False コマンド0へフォーカスを移動させてから かるた0を見えなくします。

shinkami
質問者

お礼

ご教授有難うございます。 解決しました。 かるたゲーム開発中です、まだまだ行きづまることがあると思います。 新しい質問にお気づきのときはよろしくお願いします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1のご回答と同じですが コマンドボタンがあれば#1のようにでも良いし 他の(次ぎの)テキストボックスがあれば、それをsetFocusすれば、そちらへFocusが移ります。 Private Sub テキスト0_Click() MsgBox "クリック・イベント" 'Me.テキスト2.SetFocus 'コマンド4.SetFocus オプション5.SetFocus Me.テキスト0.Visible = False End Sub 上記の 'Me.テキスト2.SetFocus 'コマンド4.SetFocus オプション5.SetFocus どれか1つでエキストボックスが消えました。 これで質問者のニーズに合いますか。 2,4,5の番号は、もちろん私のテスト時のものですので、他の方の場合はかわります。

shinkami
質問者

お礼

色々動作確認までしていただき有難うございます。 解決しました。 かるたゲーム開発中です、まだまだ行きづまることがあると思います。 新しい質問にお気づきのときはよろしくお願いします。 回答運営スタッフに連絡する

関連するQ&A

  • access の テキストボックス名を変数として取り扱いできませんか

    かるた取り(百人一首)のゲームのサイトは沢山ありますが、自分なりのものを作ってみたいのです。 フォーム上に100(かるた01~かるた99)を配置したのですが、このボックスにランダムに「下の句」を貼り付けるのにボックス名を変数化したいのです。 ボックス名を配列定義「かるた(99)」できればこれに越したことはないのですが

  • ACCESS かるた取り(百人一首) 5秒後に表示するには

    皆様のお陰でだいぶ仕上がってまいりました。 読み上げカードのテキストの表示を時間をおいて表示したいのですが 開始ボックスをクリックすると 最初に上の句を表示して、5秒後に中の句、下の句を表示しようとしたコーディングですが 最初無反応で、5秒後に一度に表示されてしまいます。 Private Sub 開始_Click() Dim 待ち時間 As Single 上の句.Visible = True 待ち時間 = Time() 待ち時間 = Time() + 5 / 24 / 60 / 60 Do While Time() < 経過時間 I = I Loop 中の句.Visible = True 下の句.Visible = True End Sub

  • (ACCESS)条件に応じて、テキストボックスを表示・非表示設定

    (ACCESS)条件に応じて、テキストボックスを表示・非表示設定 フォーム上のテキストボックスAを条件に応じて表示・非表示にさせたいです。 条件は、サブフォームのテキストボックスBに「支払」を言う文字があれば、 テキストボックスAが表示され、なければ非表示にする方法が探しています。 わからないなりに調べて、多分以下の文章になると思いますが、「?」の条件式がうまくいきません Private Sub AA_GotFocus() If  ????? Then Me!テキストボックスA.Visible = False Else Me!テキストボックスA.Visible = True End If End Sub どなたか教えてください。 宜しくお願い致します。

  • テキストボックスかコンボボックスを条件としたい

    フォーム上のコントロールを取得する時に、 「テキストボックスかコンボボックスなら」としたいのですが、VBAコードがわかりません。 ************************************************************ Sub Sample() Dim myCtrl As Control Dim myForm As String myForm = "フォーム1" For Each myCtrl In Forms(myForm).Controls If myCtrlのタイプがテキストボックス Or コンボボックス Then Debug.Print myCtrl.Name End If Next End Sub ************************************************************ に修正していただけますか? ControlType プロパティを使うと思うのですが、使い方がわかりません。 ご回答よろしくお願いします。

  • 効率の良いテキストボックスの検知について

    VB6の初心者です。質問させていただきます。 画面上に5つのテキストボックス(TEXT1、TEXT2、TEXT3、TEXT4、TEXT5)と 1つのコマンドボタン(Cmd_SAVE)があり、 画面上の5つのテキストボックスをすべて記入し、 コマンドボタンを押すと、登録確認のメッセージボックスが表示され、 OKボタンを押すと、サーバへ転送され、 画面上のテキストボックスにひとつでも空欄があると、どのテキストボックスが 空欄であるかを示すメッセージが表示される処理をさせています。 そこで質問なのですが、今、メッセージボックス、登録処理は出来るようになったのですが、 とても処理の効率が悪い、もっと空欄を確認するのにすっきりとしたコードはある、と知り合いに言われました。 おそらく、繰り返し等を用いると思うのですが、メッセージにそれぞれのオブジェクト名を代入するやり方がわかりません。 下記が今のコーディングです。 Private Sub Cmd_SAVE_Click()   If TEXT1.Text = "" Then      MsgBox "TEXT1が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT2.Text = "" Then      MsgBox "TEXT2が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT3.Text = "" Then      MsgBox "TEXT3が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT4.Text = "" Then      MsgBox "TEXT4が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT5.Text = "" Then       MsgBox "TEXT5が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then     Exit Sub   End If   End If ~登録処理~ End Sub どのような書き方がきれいで、効率的なコーディングなのでしょうか? ご教示お願いします!

  • Access テキストボックスの文字色

    チェックボックスにチェックが入っていない場合、テキストボックス内の文字色を赤に、チェックを入れたら黒に、またチェックを外したら赤に、という風にしたいです。 条件付書式で設定した場合、条件を満たしたらすぐには反映されず、一旦別のレコードに移動して戻ってくると反映されています。 VBAのコードで Private Sub 処理_AfterUpdate() If チェックボックス = 0 Then '文字色変更処理 Else '文字色変更処理 End If End Sub のようにすれば出来るのではないかと思うのですが、 文字色変更のコードがわかりません。 どなたか教えてください。

  • テキストボックスなら空白にする

    フォームにテキストボックス2つとコンボボックス2つを設置して、 規定値に値を設定し、 Private Sub cb_テキストボックスなら空白にする_Click() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then ctl.Value = Empty End If Next ctl End Sub としたのですが何も起こりません。 空白にするにはどうすればいいでしょうか? あと、 ctl.Valueと打つ時に、 ドットの後に、Valueが一覧に出てきませんでした。 それが原因で空白にならないのでしょうか? ご回答よろしくお願いします。

  • テキストボックスの桁数をカウントして、フォーカス移動

    Win2000、VB6.0です。 テキストボックスとADOコントロールを使用して、レコードを編集・更新するフォームを作っています。 ただ、簡単に書く為に下の説明文ではDBについては書きません。 Form1に、Text1とText2があるとします。 Tab移動だけではなく、Text1に4桁目まで入力された時点で、Text2へフォーカスが移動するようにしたいと考えています。 Text1のChangeイベントで、 ------------------------------------ Private Sub Text1_Change()   If Len(Text1.Text) >= 4 Then     Text2.SetFocus   End If End Sub ------------------------------------ 以上のように記述しています。 ただ、Form1のロード時に、 ------------------------------------ Private Sub Form_Load()   Text1.Text = "1111" End Sub ------------------------------------ 以上のように記述すると、 「実行時エラー"5";」 「プロシージャの呼び出し、または引数が不正です。」 とエラーが発生してしまいます。 ロード時にテキストボックスに表示しつつ、入力された現在の桁数をカウントして、フォーカス移動する方法は無いのでしょうか? よろしくお願いします。

  • Accessテキストボックスの未入力チェック

    いつも参考にさせて頂いております。 Accessテキストボックスの未入力チェックで上手くいかず悩んでいます。過去の情報等調べましたが、わかりませんでした。 どなたか宜しくお願い致します。 フォーム1にテキストボックス1、ボタン1があります。 テキストボックスを何も入力せず、Enter等で移動する時にチェックをかけたいです。 もし、テキストボックスに何も入力がなかったら、メッセージを出し、フォーカスをテキストボックスに戻す。 何か入力があれば、ボタンにフォーカスが移動する。 If IsNull(Me.テキストボックス1) = "" Then msgbox "未入力です。" Me.テキストボックス1.SetFocus End If 宜しくお願い致します。

  • エクセル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 これですと、次のテキストボックスにフォーカスが移動してしまいます。 次のテキストボックスにフォーカスを移動させずに、規格内の値が 入力されるまでフォーカスを移動させない方法を教えて下さい。 お願い致します。

専門家に質問してみよう