Access VBAで特定のテキストボックスの値に応じて色を変える方法

このQ&Aのポイント
  • Access VBAを使用して特定のテキストボックスの値に応じて色を変える方法について質問です。
  • 質問者はAccessのバージョン2003を使用しており、単票形式のフォームに作成されたボタンを押すと、テキストボックスの値が条件に該当する場合に色が黄色に変わるVBAが既に書かれています。
  • 質問者はその後、黄色に変わったテキストボックスの名前をメッセージボックスに表示させたいとのことです。VBを初めたばかりで理解が不十分なため、具体的な書き方について教えて欲しいと言っています。
回答を見る
  • ベストアンサー

条件に該当したテキストボックスの名前を

はじめまして。 現在AccessでVBを書いているのですが少しわからない事が ありましたので質問させて下さい。 バージョンは2003です。 単票形式のフォームにて、既に作られているボタンを押すと あるテキストボックスの値が条件に該当する場合、テキストボックスの 色が黄色に変わるというVBが既に書かれています。 そのVBが実行された後、黄色に変わったテキストボックスだけの 名前をメッセージボックスに表示させたいのですが、 どのようなVBを書けばいいのでしょうか>< VB始めたばかりでまだよく理解できていないので ネットなどでいろいろ調べたのですがわからなくて… msgbox関数?を使えばいいのはわかるのですが。 良かったらご教授お願いします!

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

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

実験的に以下のようにできます。 Private Sub コマンド6_Click() Dim ctl As Control 'テキストボックスの背景色を黄色に設定 For Each ctl In Me.Controls If TypeOf ctl Is TextBox Then   'テキストボックスに3が入力されている 'ものを黄色にする If ctl.Value = 3 Then ctl.BackColor = vbYellow End If End If Next ctl '背景色が黄色のテキストボックスの検索 For Each ctl In Me.Controls If TypeOf ctl Is TextBox Then If ctl.BackColor = vbYellow Then MsgBox ctl.Name End If End If Next ctl End Sub

macaron0321
質問者

お礼

教えてくださったVBで解決しました!助かります>< とても参考になりました!ありがとうございます!

関連するQ&A

  • 条件に該当したテキストボックスの名前を(2)

    前回 http://okwave.jp/qa/q6556269.html で テキストボックスの名前をメッセージボックスに表示する方法(VBA)を 教えて頂いたのですが新たにわからない事がでてきてしまったので 質問させて下さい><自力で解決しようとしたのですがどうしてもできなくて… Accessのバージョンは2003です。 フォームに伝票番号と得意先コードの2つの入力フィールド (テキストボックス)があります。 やりたいことは、以下のようなことです。 伝票番号は100未満の数値でなくてはならず、 得意先コードは1以上かつ10未満でなくてはなりません。 もし、上記の条件に該当しない場合はテキストボックスの色を 黄色に変更させます。 そうしたら黄色に変更されたテキストボックスだけの名前を メッセージボックスに表示させます。 前回教えて頂いたVBAを追記して動かしたところ どちらか片方がエラーの場合はテキストボックスの名前が メッセージボックスに表示されるのですが、 2つともエラーの場合、メッセージボックスが2回表示され 1つのメッセージボックスに1つの名前しか表示されません。 記述したVBAでは正常な動作だと思うのですが、 これを1つのメッセージボックスに黄色のテキストボックスの 名前をいっぺんに表示させたいのですが、 どのようにすれば宜しいでしょうか。 良かったらご教授お願いします!>< 現在記述しているVBAは以下になります。 ---------------------------------------------------------------- Private Sub 閉じる_Click() 'フォーム上のコントロールを格納する変数 Dim ctrl As Control 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Me.Controls '取得したコントロールがテキストボックスかどうか If ctrl.ControlType = acTextBox Then '伝票番号の値が100未満の場合 If Me!txtNo <= 100 Then '背景をピンクに Me!txtNo.BackColor = vbMagenta Else '背景を黄色にして値を元に戻す Me!txtNo.BackColor = vbYellow End If '得意先コードの値が1以上かつ10未満の場合 If Me!txtCode <= 10 And Me!txtCode >= 1 Then '背景をピンクに Me!txtCode.BackColor = vbMagenta Else '背景を黄色にして値を元に戻す Me!txtCode.BackColor = vbYellow End If End If Next ctrl Me.Undo 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Me.Controls 'テキストボックスのコントロールを取得 If TypeOf ctrl Is TextBox Then '取得したコントロールが黄色だった場合 If ctrl.BackColor = vbYellow Then 'メッセージボックスに名前を表示 MsgBox ctrl.Name End If   End If Next ctrl End Sub

  • Access2000のレコードの移動について

    Access2000を使用しています。 データが50件ほど有り、単票形式でフォームを作成しています。 そこで、その単票形式のフォームに非連結のテキストボックスを入れて、そのテキストボックスに「3」などの数字を入れると、3件目のフォームにジャンプが出来るようなものを作りたいのですが・・・よろしくお願い致します。 (VBはほとんどわかりません)

  • コンボボックスの抽出条件のLikeについて

    フォーム内のコンボボックス処理について 現在ACCESS2002でDBを構築しております。 初心者です。 フォーム内でテキストボックスから値【a】をもらい、その【a】を抽出条件として抽出結果を コンボボックスに表示したいと考えております。 ※like関数を使用 Private Sub テキスト1_AfterUpdate() DoCmd.Requery "コンボ1" Me!テキスト1.Requery End Sub コンボボックスの値集合ソースの抽出条件で ((テーブル.カラム) like "'*" & Forms!フォーム!テキスト1 & "*'") 上記で指定したのですが、何も抽出されません。 イコールで下記を実行すると値は抽出されます。 ((テーブル.カラム) = Forms!フォーム!テキスト1 ) LIKE関数の使い方が悪いのでしょうか。 お手数ですが、ご教授願います。

  • マウスをグリグリした時に、テキストボックスのス

    マウスをグリグリした時に、テキストボックスのスクロールバーを動かしたい アクセス2003です。 1レコードのには縦に あ い う え お と改行ありで5文字が入っていて、 2レコード目には か き く け こ と入力しています。 このテーブルを基に単票形式のフォームを作成しました。 そこにテキストボックスがあり、高さが多少あります。 テキストボックスにスクロールバーも付けました。 その状態で、マウスホイールをグリグリすると、次のレコードへ移動してしまいます。 そうではなくて、マウスホイールをグリグリした時に、 テキストボックスのスクロールバーを動かしたいのですがやり方を教えてください。 フォームのForm_Currentイベントで どうにかなりそうな気がするのですが、どうしていいかわかりません。

  • フォームのテキストボックスを抽出条件とするクエリー

    Access2003を使って、「フォームのテキストボックスを抽出条件とするクエリー」 を作成していて困っています。 まず Like [Forms]![顧客氏名検索]![テキスト2] とすると、完全一致したものだけが抽出できています。そこで 【値の一部が一致】 Like "文字列*"   ※文字列にある文字列を直接入力するとちゃんと抽出できる。 これを参考に Like "[Forms]![顧客氏名検索]![テキスト2]*" とすると、値の一部が一致するものが抽出されません。(何を入力しても該当0件) 抽出条件が正しく設定されてないように思います。 フォームのテキストボックスの値を利用する場合、""や*の使い方がおかしいのでしょうか?

  • テキストボックスのバグでしょうか?

    VB5(SP3)を使用しています。 例えばフォームにテキストボックスを2つ貼りつけて、プログラムを実行します。 IMEの入力設定を「ローマ字入力」の状態で始めたとします。 最初のテキストボックスでキーボードの【Alt】+【カタカナ・ひらがな/ローマ字】を押しても「かな入力」になりません。次のテキストボックスにカーソルを移動すると「かな入力」が有効になります。 ACCESSとかだとその場で有効になります。 これはVBのバグなのでしょうか? 使用PC:DOS/V 使用OS:WindowsNT4.0

  • Accessのフォーム単票印刷で印刷しないテキストボックスを配置可能でしょうか

    Accessのフォーム単票印刷で一部のテキストボックスだけを、入力のみで印刷しないように設定することはできますか レポートを使わずフォームの画面から印刷は行いたいです

  • ACCESS2000 テキストボックスに入力できない

    お世話になります。 環境:Win2000SP4 ACCESS2000 「メインフォーム」から、条件入力用のテキストボックスがある「条件フォーム」を開いた時、そのテキストボックスに一切入力できなくなります。「条件フォーム」を単独で開いた時には入力できます。条件フォームはオートフォーム:単票形式で作り、フォームヘッダーにテキストボックスと実行ボタンを付加しました。以前のご質問(QNo.394049 Access2000 テキストボックスに文字を入力できない理由が判りません。)に、元が集計クエリであれば入力できないとありました。まさに元が集計クエリなのですが、条件フォームを単独で開いた時には入力できますし、結果も表示されます。 どのような情報が必要かわかりませんのでとりあえず次の内容を。。。 ■集計クエリのSQL  SELECT 使用TBL.年月日,sum(使用TBL.使用金額) AS 使用金額の合計  FROM 使用TBL  GROUP BY 使用TBL.年月日  HAVING (((使用TBL.年月日)=[Forms]![条件フォーム]![txt_年月日])); ■テキストボックス(txt_年月日)  使用可能:はい  編集ロック:いいえ  IME入力モード:コントロールなし  IME変換モード:無変換 メインフォームを経由すると、なぜ入力できなくなるかわかりません。なにか問題でもあるのでしょうか?どなたかご教授頂けないでしょうか?

  • ACCESS2000の帳票フォームでテキストボックスの入力値を取得したい

    こんにちは。ACCESS2000でツールを作成しています。 テーブルはExcelにリンクさせ、クエリを介して帳票フォームで データを表示しています。 帳票フォームのレコード毎にテキストボックスを追加して それぞれ入力できるようにし、その値をVBAで取得したいのですが どうすればよいでしょうか。 テキストボックスを追加して実行すると、一つのテキストボックスに 入力した値が全てのレコードに反映されているようです。 帳票フォームのしくみがよく分かりません。 どなたか教えていただけないでしょうか。 宜しくお願いします。

  • AccessのVBAにおいて,アクセスフォームに表示されている「値」を

    AccessのVBAにおいて,アクセスフォームに表示されている「値」を変数の中に格納したい。  例えば,オートフォームの単票形式でフォームを作成した場合,「番号」「製品」といったフィールドが2個あるテーブルを使うと,「番号」「製品」という名前のテキストボックスが2個ほどできます。 (フィールド名やテキストボックス名は問題ではありません。) このフォーム上に「ボタン」を配置し,このボタンをクリックした時に,「製品」というテキストボックスの内容を,メッセージボックスで表示させたい。 MsgBox (Me.製品.Text) と書いてもエラーとなります。 実際には,このフォームで欲しいデータを見つけた時,ボタンクリックで,テキストボックスに表示されている内容をグローバル変数に格納したいのですが,方法が分かりません。 Access 初心者です。どなたかよろしくお願いします。

専門家に質問してみよう