VBAでテキストボックスの前景色を変える方法

このQ&Aのポイント
  • ACCESS初心者の者が、テーブルと連結しているテキストボックスの前景色をVBAを使って変えたいという質問です。
  • 具体的には、自宅通学がTRUEの生徒の学籍番号を赤色で表示させたいということです。
  • 現在のクラスモジュールでは、全ての学生の学籍番号が赤くなってしまう問題があります。どのように修正すれば良いでしょうか?
回答を見る
  • ベストアンサー

ACCESSのVBAでテキストボックスの前景色を変えたい

ACCESS初心者の者です。 質問なんですが、テーブルと連結しているテキストボックスの前景色を 変えるのにVBAを使ってやりたいのですが、どうしたらいいのでしょうか? 具体的には、  (1)以下のような生徒フォームがあり、学籍番号、名前、自宅通学は   テーブルと連結してます。   学籍番号  名前     自宅通学    001   山田太郎   FALSE   002   木下花子   TRUE   003   鈴木次郎    FALSE     (2)生徒を上から順に舐めていって自宅通学がTRUEの者の学籍番号を赤で   表示させたいと思います。   上の例でいくと木下花子の学籍番号002が赤くなればいいです。  (3)ちなみに私が作ったVBAのクラスモジュールは以下の様ですが、   これだと木下花子だけではなくて全員の学籍番号が赤くなってしまいます。   Me.RecordsetClone.MoveFirst   Do Until Me.RecordsetClone.EOF      If Me.RecordsetClone!自宅通学 = True Then        Me!自宅通学.ForeColor = vbRed      End If      Me.RecordsetClone.MoveNext   Loop どうすればよろしいでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

Access2000 以上で有効な方法です。 フォームの学生番号欄を選択して、書式-条件付書式を実行します。 んで、「式」が「[自宅通学]=True」のときに、フォントの色を赤くしてやればいいでしょう。 尚、Access97以前では多分、出来ません。 不明点とかあれば、補足にてご質問ください。

redsky
質問者

お礼

早速の御回答ありがとうございます。 私のAccessのバージョンを書くのを忘れていましたね。 私のは、Access97なので無理ということですね。 昨日、自分でもネットや本屋でいろいろ調べてみました。 単純にラベルの色を変えることは簡単にできる様ですが、 上記の様なケースは見つからなかったので、あきらめて いたのですがやはり無理でしたか・・・。 蛇足ですが、質問本文にあるVBAのソースの上から4行目は Me!学籍番号.ForeColor = vbRed の間違いですね。失礼しました。 どうもありがとうございました。また何かの折はよろしく お願いします。

関連するQ&A

  • ACCESS VBA で複数項目検索にテキストボックスとコンボボックス

    ACCESS VBA で複数項目検索にテキストボックスとコンボボックスを使用したい txtPC番号というテキストボックス、 com所属部門というコンボボックス、 txt使用者というテキストボックスの どれかひとつの条件が入力されたときに 該当するフォームのレコードを抽出できるようにしたいのですが、 コンボボックスで選択した場合のみうまく抽出できません。 コードのどの部分に誤りがあるのでしょうか? ご指摘願えませんでしょうか? よろしくお願いいたします。 Private Sub cmd01_Click() Me.FilterOn = False If Me!txtPC番号 <> "" Then Me.Filter = "[PC番号]like '*" & Me!txtPC番号 & "*'" ElseIf Me!com所属部門 <> "" Then DoCmd.Requery "com所属部門" ElseIf Me!txt使用者 <> "" Then Me.Filter = "[使用者]like '*" & Me!txt使用者 & "*'" End If Me.FilterOn = True End Sub

  • Access 97 VBAについて

    Access VBAについて教えてください。 初心者ですが、レポートに表示されるテキストボックスの”項目名”と”内容”プロパティーに重複データ非表示にしています。そして、非表示となった部分に”〃”を表示するため別のテキストボックス、”隠しオブジェクト1”及び”隠しオブジェクト2”を配置しています。???にどんな記述が必要かわかりません。”項目名”だけであれば問題なく表示されるのですが”内容”についても同様に処理したいのです。 どうぞ宜しくお願いいたします。 Option Compare Database Option Explicit '値を保持するために外側に変数を定義します。 Dim varA As Variant --------------------------------------------------- Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)   If Me.項目名 = varA Then    Me.隠しオブジェクト1.Visible = True Else Me.隠しオブジェクト1.Visible = False End If varA = Me.項目名 ???? If Me.内容 = varA Then Me.隠しオブジェクト2.Visible = True Else Me.隠しオブジェクト2.Visible = False End If varA = Me.内容 End Sub

  • access 複数フィールドを1フィールドに

    Access勉強中です。 委員名簿テーブルと、いくつかの行事テーブルを結合したいのですが、上手くいきません。 どうか教えてください。 access2003です。 委員名簿テーブル  クラス   生徒名1   生徒名2   生徒名3  1-1     ああ     いい     1-2     かか     きき      くく  1-3     ささ  1-4     たた     ちち      つつ 行事Aテーブル          行事Bテーブル  生徒名   参加          生徒名    参加   かか    true           ああ     false        ささ     true           いい     true            ちち    false           きき     true                       たた     true                       ちち     true  このようなテーブルを結合して、次のようなテーブルを作りたいのです。  クラス  生徒名   行事A    行事B  1-1   ああ            false  1-1   いい            true  1-2   かか    true  1-2   きき            true  1-2   くく  1-3   ささ     true  1-4   たた            true  1-4   ちち    false     true  1-5   つつ よろしくお願いします。

  • アクセスのコンボボックスでの〇×表示について。

    担当者フォームがあります。 クエリをもとにした担当者リスト一覧があります。 非連結のフォームがあります。 担当者フォームには担当者コード、担当者名、パスワード等があり、〇×選択で、参照・更新・保守があります。このフォームで新規登録。修正。削除ができるように作成しました。list_TANの中で項目をクリックすると、非連結のフォームにデータが入っていきます。 Private Sub list_TAN_AfterUpdate() Me.担当者コード = Me.list_TAN.Column(0) Me.担当者名 = Me.list_TAN.Column(1) Me.担当者かな = Me.list_TAN.Column(2) Me.パスワード = Me.list_TAN.Column(3) ' Me.参照 = Me.list_TAN.Column(4) If Me.list_TAN.Column(4) = "○" Then Me.参照 = 1 Else Me.参照 = 0 End If If Me.list_TAN.Column(5) = "○" Then Me.更新 = 1 Else Me.更新 = 0 End If If Me.list_TAN.Column(6) = "○" Then Me.保守 = 1 Else Me.保守 = 0 End If Me.cmd_登録.Enabled = False Me.cmd_修正.Enabled = True Me.cmd_削除.Enabled = True Me.cmd_クリア.Enabled = True で、非連結のフォームにはいっていくことはできたのですが、参照・更新・保守については、コンボボックスになっていて、値リストの集合タイプには1;○;0;×と記入してあります。 参照が〇となっていても、非連結に入ってくるのは×になってしまいます。〇→×、×→×。なのでまた入れなおさなきゃいけません。他の情報についてはうまく入っていってくれるのですが、コンボボックスの〇×だけが上手くいきません。どのようにすればきちんと表示できますか??分かる方いましたらご教示ください。宜しくお願い致します。

  • エクセル VBA チェックボックスについて

    よろしくお願い致します。 OS:XP エクセル2003 VBAのことは、まったくの初心者です。 質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。 ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。 Private Sub CheckBox7_Click() If CheckBox7.Value = True Then CheckBox8.Enabled = True CheckBox9.Enabled = True CheckBox10.Enabled = True CheckBox11.Enabled = True Else CheckBox8.Value = False CheckBox9.Value = False CheckBox10.Value = False CheckBox11.Value = False CheckBox8.Enabled = False CheckBox9.Enabled = False CheckBox10.Enabled = False CheckBox11.Enabled = False End If End Sub

  • 行数を固定して納品書を作成したが、いらない部分がでる

    こんばんは、提出時間がせまっているので、 あせって、質問しました。 今、アクセスにて納品書のレポートの作成中です。 Q_売上テーブルとQ_売上明細テーブルをつかって、 レポートを作成し、5行に固定したかったので、 下記のようなVBAを記述しました。 行は、固定されましたが、 なぜか1行しかない時などに、 商品区分だけが2行目3行目に1行目の内容をコピーして はいってくるのです。 どこがおかしいのかわからず、苦戦中です。 ご教授、よろしくお願いいたします。 Option Compare Database Dim AAA As Integer Dim BBB As Integer Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) AAA = 0 BBB = DCount("伝票番号", "Q_売上明細テーブル", "伝票番号='" & Me!伝票番号 & "'") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) AAA = AAA + 1 Me!テキスト54 = AAA If AAA Mod 5 = 0 Then If AAA < BBB Then Me!改ページ55.Visible = True Me.Section(3).Visible = True ElseIf AAA = BBB Then Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me!テキスト54.Visible = False Me!商品区分.Visible = False Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If Else Me!改ページ55.Visible = False Me.Section(3).Visible = False If AAA < BBB Then Me.NextRecord = True Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True ElseIf AAA = BBB Then Me.NextRecord = False Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me.NextRecord = False Me!テキスト54.Visible = False Me!商品区分.Visible = True Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If End If End Sub

  • 【Access】テキストボックスに入力後、そのテキストボックスを無効化する方法について

    txt_IDというテキストボックスにIDを入力して、 そのIDがデータベースに存在した場合、txt_IDを無効化したいと思います。 下記にソースコードを記載しましたが、下記では Me.txt_ID.Enabled = False まで遷移した後、下記のエラーメッセージが表示されてしまいました。 「実行時エラー '2164': コントロールがフォーカスを取得しているときは、コントロールを無効にすることはできません。」 【ソースコード】 Private Sub txt_ID_BeforeUpdate(Cancel As Integer) Dim record_Existence As Boolean ' 本来はDBにアクセスして入力したIDが存在するかチェックしています。 record_Existence = True If record_Existence = True Then Me.txt_ID.Enabled = False End If End Sub その為、上記のような場合、どのようにすればコントロールを無効化できるか、 ご存知の方がいらっしゃいましたら、ご教示いただければと思います。 よろしくお願いします。

  • Access2007の初心者です。VBAの記述で困っています、お力添え

    Access2007の初心者です。VBAの記述で困っています、お力添えお願いします。 チェックボックスにチェックが入っている場合に、誕生日が空白のものを抽出する部分のVBAの 記述のところで躓いているのだと思っています。 ■テーブルの情報 ・テーブル名:T_会員情報 ・T_会員情報のフィールド:会員名(テキスト形式)・性別(数値型)・誕生日(日付/時刻型) ■実現したいこと ・T_会員情報で、「検索」ボタンを押下したら、条件にあった情報がフォーム上に抽出できるもの。 ■用意したフォーム T_会員情報の連結フォーム ・フォーム上には以下を用意  ◆「性別」の非連結コンボボックス:txtSeibetsu  ◆「誕生日が空白」という非連結チェックボックス:chkBirthday  ◆「AND OR」のいずれかが選択できるオプションボタン  ◆「検索ボタン」  ◆「会員名」「性別」「誕生日」のT_会員情報の帳票フォーム ■VBA Option Compare Database Option Explicit Const cAnd = 1 Const cOr = 2 Const cBaseQuery = "SELECT * FROM T_会員情報" Private Sub 検索ボタン_Click() Dim strWhere As String Dim strAndOr As String strWhere = vbNullString If Me.optAndOr.Value = cAnd Then strAndOr = " AND " Else strAndOr = " OR " End If '性別検索 If ISNull(Me.txtSeibetsu.value)=False Then strWhere = strWhere & strAndOr & " 性別 = " & Me.txtSeibetsu.Value End If '誕生日空白検索 If Me.chkBirthday=False Then strWhere = strWhere & strAndOr & " 誕生日= " & Null End If 'WHERE句編集 strWhere = Replace(strWhere, strAndOr, "WHERE", , 1) 'レコードソース書き換えと再クエリ Me.RecordSource = cBaseQuery & " " & strWhere Me.Requery End Sub 誕生日が空白の検索のところの記述が問題だと思っています。 初心者でよくわかっておりません。 ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いします。

  • フォーム上のテキストボックスの値を変更させない方法って?

    アクセス2000を使っています。 フォーム上にテキストボックスを作成して、テーブル の値を表示しています。 VBAでこのテキストボックスの値が1の時は, me!txt.enabled=true(テキストボックスが開く) 0の時は、me!txt.enabled=false(テキストボックスがグレーアウト)というようにさせたいのです。さらにこのテキストボックスの値を変更できないようにしたいのですが方法はありますか? 要は、表示だけさせたいのです。 プロパティで値ロックするとenableが利かなくなります。 よろしくお願いいたします

  • Access ボタンクリック時プロパティ エラー

    こんばんは! Accessについて、質問があります!! あるフォームに設置したボタンのクリック時プロパティに、教えてもらったものですが Private Sub 解約_Click()   Me.取次名.Locked = False   Me.担当者名(1).Locked = False   Me.担当者名(2).Locked = False   Me.形態.Locked = False   Me.契約日.Locked = False   Me.会社ID.Locked = False   Me.会社名.Locked = False   Me.電話番号.Locked = False   Me.FAX番号.Locked = False   Me.郵便番号.Locked = False   Me.都道府県.Locked = False   Me.住所.Locked = False   Me.URL.Locked = False   Me.代表者.Locked = False   Me.代表者携帯電話.Locked = False   Me.代表者メールアドレス.Locked = False   Me.担当者.Locked = False   Me.担当者携帯電話.Locked = False   Me.担当者メールアドレス.Locked = False CopyRec   Me.取次名.Locked = True   Me.担当者名(1).Locked = True   Me.担当者名(2).Locked = True   Me.形態.Locked = True   Me.契約日.Locked = True   Me.会社ID.Locked = True   Me.会社名.Locked = True   Me.電話番号.Locked = True   Me.FAX番号.Locked = True   Me.郵便番号.Locked = True   Me.都道府県.Locked = True   Me.住所.Locked = True   Me.URL.Locked = True   Me.代表者.Locked = True   Me.代表者携帯電話.Locked = True   Me.代表者メールアドレス.Locked = True   Me.担当者.Locked = True   Me.担当者携帯電話.Locked = True   Me.担当者メールアドレス.Locked = True End Sub というイベントプロシージャを設定しました。 しかし、ボタンをクリックすると『メソッドまたはデータメンバーが見つかりません』とエラーになります。 デバッグ後、1行目が黄色くなり、『Me.代表者メールアドレス.Locked = False』の".代表者メールアドレス"や".Locked = "が青く選択されます。 単に名前が誤っているものと思い、テーブルのフィールドとフォームのテキストボックスで"メールアドレス"の部分が全角だったり半角だったりしたため、プロシージャ含め全て全角に統一しました。 それでボタンをクリックしても、同じエラーになります。 名前は全て修正したはずですが……何が原因でエラーになるのでしょうか? 回答よろしくお願いします!

専門家に質問してみよう