• 締切済み

Changeイベントで文字の色を変えたい

fumufumu_2006の回答

回答No.1

Access97はないので、Access2000ではですが・・・ とりあえず、 Set Target = 商品価格 とかしないと「オブジェクトが必要です」とエラーが出ると思います。 それと、宣言でVariantとしてますが、テキストボックスなら、TextBoxで宣言する方がいいと思います。 Dim Target As TextBox Set Target = 商品価格 それと、Access2000ではフォームのテキストボックスにFontプロパティが無いのですが、Access97ではありましたっけ・・・ とりあえず、入力があったらフォントの色を赤にするなら Private Sub 商品価格_Change() Dim Target As TextBox Set Target = 商品価格 Target.ForeColor = RGB(255, 0, 0) End Sub か、 Private Sub 商品価格_Change() 商品価格.ForeColor = RGB(255, 0, 0) End Sub ではどうでしょうか?

関連するQ&A

  • イベントマクロについて

    イベントマクロについて質問ですが まず、下記をご覧下さい。 過去にここで回答いただいたものを流用させてもらったものですが もうひとつ機能を追加したいと思います。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column >= 4 And Target.Column <= 34 Then If Target.Row >= 2 And Target.Row <= 100 Then Select Case Target Case "(5)GC" Target.Interior.ColorIndex = 34 Target.Font.ColorIndex = 0 Case "6OS", "6FC" Target.Interior.ColorIndex = 6 Target.Font.ColorIndex = 0 Case "(6)TA", "(6)C" Target.Interior.ColorIndex = 46 Target.Font.ColorIndex = 0 Case "6@BD", "6@C" Target.Interior.ColorIndex = 38 Target.Font.ColorIndex = 0 End Select End If End If End Sub 追加する機能とは、上記で指定した範囲以外のセルを参照して 色を付けるかどうかを区別するものです。 例えば、A2の値が色付けに該当する場合はD2からAH2の中で上記マクロに該当するセルに色を付け、もしA2が該当しない場合は色付けをしない というような感じです。 よろしくお願いします。

  • エクセルマクロのchangeイベントについて

    こんばんわ changeイベントを使ってみようと思い、下記のマクロを作ってみたのですが、どうしても動きません。 Private Sub Worksheet_Change(ByVal Target As Range) Set Target = Range("b4") Application.DisplayAlerts = False Dim i As Long Workbooks.Open Filename:="c:\osaruPKsarch\sarch.xls"  For i = 1 To 5 Step 1   Cells(3, i + 50) = Cells(7, i + 50)  Next i End Sub なぜ動かないのかもわかりませんToT アドバイスの程よろしくお願いいたします。

  • VBA changeイベントを複数入れたい

    VBA changeイベントを複数入れたい VBAは初心者で、以前もこちらでお世話になりました。 F4セルに入力した際、VLOOKUPで検索し、該当がなければメッセージボックスを出し、 該当があれば、そのまま次に進む、というchangeイベントが既にあります。 ここに、E4セルに入力した数字が、同じシートのE列5行目以下と重複していた場合、 エラーメッセージを出す、とのをつけたしたいと思っています。 IFを使えばいい、ということはわかるのですが、どこに入れたらいいのかがわからず・・・。 すでにあるVBAは以下のとおりです。 Private Sub Worksheet_Change(ByVal Target As Range) '処分受託者(入力用名称)を入力して、処分業者名簿になければエラーメッセージを出す。 Dim rang1 As Range Dim rang2 As Range Dim 処分受託者名称 As String Dim LastRow As Long LastRow = Worksheets("処分業者名簿").Cells(Rows.Count, "b").End(xlUp).Row Set rang2 = Worksheets("処分業者名簿").Range("b4:b" & LastRow) Set rang1 = Range("f4") If Intersect(Target, rang1) Is Nothing Then Exit Sub On Error Resume Next 処分受託者名称 = WorksheetFunction.VLookup(Target.Value, rang2, 1, 0) If Err.Number > 0 Then MsgBox Target.Value & " はありません" Range("f4").Select Else End If End Sub この、どこに重複の場合はエラーメッセージを出す、というのを入れればいいのか、 教えてください・・・。

  • Changeイベントに指示を加えたい

    こんにちは 現在ワークシートで下記マクロにて、日付・時間の履歴を自動入力しています。 3行目以降のC列のセルに何か入力すると、そのとなりのD列のセルに日付と時間が返されるものです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Integer, c As Integer r = Target.Row c = Target.Column If c < 3 Or c > 3 Or r < 3 Then End If Cells(r, c) <> "" Then Cells(r, c + 1) = Format(Now, "yyyy/m/d h:mm") Else Cells(r, c + 1) = "" End If End Sub この同一シートに、下記マクロの指示を加えたいのですが、うまくいきません。 3行目以降のE列のセルに "chcl" とすると、B列のセルに "機能回復" と自動入力されるものです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Integer, c As Integer r = Target.Row c = Target.Column If c < 5 Or c > 5 Or r < 3 Then End If Cells(r, c) = "chcl" Then Cells(r, c - 3) = Format("機能回復") Else Cells(r, c - 3) = "" End If End Sub まとめると・・・・・・ 3行目以降のC列のセルに何か入力すると、そのとなりのD列のセルに日付と時間が返され、 且つ、 3行目以降のE列のセルに "chcl" とすると、B列のセルに "機能回復" と自動入力される、 というシートが欲しいのです。 上記マクロ、それぞれ単発だと機能するのですが、一緒に出来ません。 どなたか、解決方法をご教授下さい。 よろしくお願いします。

  • VBAでChangeイベントを使いたい

    今エクセルで出納を作ってます。 シート1には A日付 Bコード C金額 D 消費税区分 E 金額 F,G,H,Iにも同様に貸方科目を入れてます。 シート2にはAコードB科目を上から下にずっといれてます。 それで借方金額Cの金額をEに飛ばすこと VLOOKUPでBのコードに対応する科目を表示すること 上記をChangeイベントでやりたいのですが、金額転記はうまくいったのですが、 VLOOKUPの方が標準モジュールではうまくいくものの、シートモジュールに移すとうまく 行きません。おそらく根本的な理解がかけてるからだと思います。 今の記述は下記 シート1に Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 Or Target.Row > 100 Then Exit Sub If Target.Column <> 5 Then Exit Sub Dim Cnt As Long For Cnt = 2 To 100 Range("I" & Cnt).Value = Range("E" & Cnt).Value Next Cnt If Target.Row = 1 Or Target.Row > 100 Then Exit Sub If Target.Column <> 3 Then Exit Sub End Sub 標準モジュールに Option Explicit Sub 科目() Dim シート1 As Worksheet Dim シート2 As Worksheet Set シート1 = Worksheets("出納") Set シート2 = Worksheets("科目") Dim myR On Error GoTo ErrorHandler myR = Application.WorksheetFunction.VLookup(シート1.Range("B2"), シート         2.Range("A2:B87"), 2, False) シート1.Range("C2").Value = myR Exit Sub ErrorHandler: シート1.Range("C2").Value = "該当無し" End Sub  大変素人な質問ですみませんが、ご回答いただけると嬉しいです。  基礎の本やレファレンス本は見たのですが、標準モジュールでできること  がなぜシートモジュールでできないかが全く分かりません。  よかったらお教えください。

  • Worksheet_changeイベントが動作しない

    Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$D$224" If Target.Value = "" Then Range("D224").Value = "-" End If End Select End Sub DeleteキーでD224をクリアした場合、D224に"-"が入力されません。 D224はD225と結合してあります。 select~caseを使ってdeleteキーで"-"が入力されるような動作を教えてください・・よろしくおねがいします。。。

  • Changeイベントのセル選択

    Private Sub Worksheet_Change(ByVal Target As Range) Dim myrang As Range Dim x as Long ★★ 'K列に入力した時 If Target.Column = 11 And Target.Count = 1 Then With Workbooks("システム.xlsm").Worksheets("台帳").Columns(7) Set myrang = .Find(what:=Target.Value, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False, matchbyte:=False, searchformat:=False) End With If myrang Is Nothing Then Dim intret As Integer ’☆ intret = MsgBox("入力エラーです!", vbCritical + vbOKOnly, "エラー発生") Else  処理2のコード X=2  ★★ End If Target.offset(X,0).select End If     End sub ’☆1のメッセージボックスが出て、OKを押したときは、入力したセルを選択、 処理2を行ったときは、2行下のセルを選択したい、という質問をし、★★のコードを教えていただき、 思った通りの動作をしました。 このパターンで、同じように1行下のセルを選択、は出来たのですが。 他に、 ’☆1のメッセージボックスが出た時には、入力したセル、 処理2を行ったときは Target.offset(1,3).select としたい時はどのようにしたらいいのでしょうか? 会社にしかパソコンがなく、お返事は明日になると思いますが、どなたか よろしくお願い致します。

  • エクセルでセルをクリアされたら、自動的にセルの色を変更したい

    エクセルで、セルの値がDeleteキーなどでクリアされた場合に、 自動的にセルの色がかわるようにしたいのですが、 何かよい方法はないでしょうか? セルの内容が変更された場合のフォントの色を変えるために、 Private Sub Worksheet_Change(ByVal Target As Range) Target.Font.ColorIndex = 3 End Sub というマクロは設定しています。 これだとクリアされた場合、わからないので。。。 よろしくお願いします。

  • エクセルVBAのイベントについて教えてください。

    エクセルVBA初学者のです。 "C9"にいれるとchangeイベントが発生するコードなんですが、 "C9"のほかに"D1"においてもchangeイベントを発生させたいのですが 下記のコードに続けて書いてもイベントが発生しないのですが どのように書けばよいのでしょうか? private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("C9")) Is Nothing Then Exit Sub Range("H14:H56").Interior.ColorIndex = 2 If Intersect(Target, Range("D1")) Is Nothing Then Exit Sub Range("G14:G56").Interior.ColorIndex = 2 End Sub よろしくお願いします。

  • VBA CHANGEイベントに複数イベントを

    いつもお世話になっています。 色々しらべて試してみたんですが、うまくいかないんで教えてください。 CHANGEイベントに複数のイベントを書き込みたいんですが。 今現在、問題なく動いている以下のイベントがあります。 (1) Private Sub Worksheet_Change(ByVal Target As Range) Dim rang3 As Range Dim rang4 As Range Dim ■■ As String Dim LastRow1 As Long LastRow1 = Worksheets("○○").Cells(Rows.Count, "b").End(xlUp).Row Set rang4 = Worksheets("○○").Range("b:I" & LastRow) Set rang3 = Range("h4") If Intersect(Target, rang3) Is Nothing Then Exit Sub On Error Resume Next ■■ = WorksheetFunction.VLookup(Target.Value, rang4, 2, 0) If Err.Number > 0 Then MsgBox Target.Value & "はありません。基本情報台帳に入力してください。" Range("h4").Select Else Application.EnableEvents = False Range("I4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 2, False) Range("j4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 3, False) Range("k4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 7, False) Range("l4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 8, False) Range("m4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 5, False) Application.EnableEvents = True Range("K4").Select End If End Sub このシートにもう一つ、イベントを入れたいのですが。 (2) If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("E4")) Is Nothing Then Exit Sub Else If Range("e4").Value = "1" Then Target.Offset(0, 19).Value = "☆" End If どこに入れればいいのかわかりません。 (3) また、(2)のイベントの他に、 (1)のVLOOLUPが実行され、尚且つ(2)のイベントのE4が値が1だった場合、Y4にH4の値を入れたいのですが・・・。 (2)のみなら動くことは確認できましたが、(1)のexit sub の直前に入れたり、end ifの前に入れたりしましたが、片方は動くが、もうひとつが動かないです。 (3)については、まったくわかりません。 マクロについて、自分でネットで勉強した程度なので、基本がわかっていないからなのでしょうが・・・。 どなたか、教えてください。 お願いします。