アクセス複数の条件で同じ書式をつけるには?

このQ&Aのポイント
  • VBAで条件付き書式を使用して、同じ書式を複数の条件に適用したい場合、まとめることはできないのか疑問です。
  • 具体的には、フォームのフィールドに対して、「あ」と「い」の場合に赤色の書式を適用したいと考えています。
  • しかし、上記の方法だと実行時エラーが発生してしまいます。もし複数の条件で同じ書式を適用したい場合、別々に設定するしか方法はないのでしょうか?
回答を見る
  • ベストアンサー

アクセス複数の条件で同じ書式をつけるには?

条件付き書式です。(しかもVBAです) 一つのフィールドに対して違う条件だけど同じ書式をつけたい時、 まとめる事は出来ないのでしょうか? 例えばフォールド1の「あ」と「い」を赤にしたい場合、 Sub test01() Dim Field As String Dim MyFormName As String MyFormName = "フォーム" Field = "フィールド1" With Forms(MyFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""" And "[" & Field & "]=""い""") .ForeColor = 225 End With End With End With End Sub のような事は出来ないのでしょうか? これをすると 実行時エラー:型が一致しません。(Error 13) になります。 素直に、 Sub test02() Dim Field As String Dim MyFormName As String MyFormName = "フォーム" Field = "フィールド1" With Forms(MyFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""") .ForeColor = 225 End With With .Add(acExpression, , "[" & Field & "]=""い""") .ForeColor = 225 End With End With End With End Sub としなくちゃダメでしょうか? 何故こんな事がしたいかと言うと、3つ以上やりたい条件がありので、 同じ書式のものはまとめたいのです。 ご教授よろしくお願いします。

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

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

解決しましたか? ダブルクォーテーションの数とAndの位置設定が違っているようですが。 以下のように。 With .Add(acExpression, , "[" & Field & "]=""あ"" And [" & Field & "]=""い""") あるいは、条件が「あ」または「い」の時ならば、 With .Add(acExpression, , "[" & Field & "]=""あ"" Or [" & Field & "]=""い""") でよろしいかと。

snxosrmijia
質問者

お礼

回答ありがとうございました。

その他の回答 (2)

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

No2の変数名に余分なものがくっついていました。 With .Add(acExpression, , "[" & Field & "]=""あ"" Or [" & Field & "]=""い""") です。

snxosrmijia
質問者

お礼

回答ありがとうございました。

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

No1です。 たぶん、Andで条件を結合すると質問の画像では色がつかないので、 二番目のOrで条件を結合するようになると思いますが。以下です。 With .Add(acExpression, , "[" & strField & "]=""あ"" Or [" & strField & "]=""い""")

snxosrmijia
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • 白のコード(数値)を教えてください。

    Sub test() Dim Field As String Dim MyFormName As String MyFormName = "フォーム" Field = "フィールド1" With Forms(MyFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""test""") .ForeColor = #FFFFFF '白にしたい End With End With End With End Sub フォームに条件付書式を設定したくて上記のコードをVBE画面に貼りつけたのですが 文字色を白にしたいのです。 しかしデザインビューで白を確認すると、「#FFFFFF」となってしまい、 VBAコードに貼りつけるとコンパイルエラーになります。 アクセス2007です。 白のコード(数値)を教えてください。

  • 「フォーカスのあるフィールドに色を付ける」vba

    帳票フォームの全てのコントロールに 条件付き書式で 「フォーカスのあるフィールドに色を付ける」を行いたいのですが コントロールが多すぎる為VBAでループさせたいのですがコードがわかりません。 http://www.tsware.jp/tips/tips_187.htm これをVBAで行いたいです。 VBAでの条件付き書式は Sub Sample() Dim Field As String Dim myFormName As String With Forms(myFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""") .BackColor = 225 End With End With End With End Sub こんな感じで出来る事は知ってますが、 vbaで「フォーカスのあるフィールドに」と言う条件の付け方がわからないので教えてください。

  • VBAで条件付書式

    アクセス2003なのですが 「色を青にして太字に」するにはどうすればいいでしょうか? Sub 条件付書式() With Form_フォーム1.テキスト2 .ForeColor = RGB(255, 255, 255) With .FormatConditions .Delete .Add(acExpression, , "[テキスト2]=""青にする""").ForeColor = 16711680 '青 End With End With End Sub で青にはなるのですが 青なおかつ太字にするにはどうすればいいでしょうか? FontStyle プロパティを使うのでしょうか? 書き方を教えてください。

  • アクティブ(カレント)レコードに条件付き書式で

    アクティブ(カレント)レコードに条件付き書式で色を付けるには? フォームに乗ってるサブフォームに対して、レコードが移動したら条件付き書式をつけたいです。 サブフォームのCurrentイベントに ////////////////////////////////////////////////////// Private Sub Form_Current() Dim avarContorol As Variant Dim iLoop As Integer Dim ctl As Control Dim mystr As String Dim i As Integer ReDim avarControl(Me.Controls.Count - 1) For i = 0 To Me.Controls.Count - 1 avarControl(i) = Me.Controls(i).Name Next i For iLoop = 0 To UBound(avarControl) With Me.Controls(avarControl(iLoop)).FormatConditions .Delete 'コントロールが文字列型ならダブルコーテーションでくくる With .Add(acExpression, , "[名前] = """ & Me.Controls("名前") & "") .BackColor = 255 End With End With Next iLoop End Sub ////////////////////////////////////////////////////// としたのですが、エラーにもならないけど、色もつかないです。 予想としては赤になると思ったのですが・・・ しかも、2010は設定した条件付き書式をフォームビューでは確認できないようです。 フォームビューで設定した条件付き書式は保存されないから、デザインビューで確認しようとしても、見れません。 サブフォームに対して行おうとしているからできないのでしょうか? どこが間違ってるか教えていただけますか? ご回答よろしくお願いします。

  • Excel2010のバグ?(条件つき書式)

    test1は、A~X列に数字と条件付き書式をセットするマクロですが、途中のセルから色化けします。 原因がお分かりの方はご教授ください。どうもExcel2010のバグのように思われます。 バグならMicrosoftのどこに報告あるいは問い合わせれば良いでしょうか。 Sub test1() Dim aRow As Long Dim aCol As Long With ActiveSheet For aRow = 1 To 3 For aCol = 1 To 25 .Cells(aRow, aCol).Value = aCol Call SetFormatConditionOfColor(aRow, aCol, "=1") Next Next End With End Sub Public Sub SetFormatConditionOfColor(ByVal aRow As Long, ByVal aCol As Long, ByVal aFormula As String) With ActiveSheet.Cells(aRow, aCol) .FormatConditions.Delete '一致するセル .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:=aFormula With .FormatConditions(1) .Font.Color = 0 .Interior.Color = 13434879 End With '一致しないセル .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _ Formula1:=aFormula With .FormatConditions(2) .Font.Color = 16777215 .Interior.Color = 16767843 End With End With End Sub OS: MS WindowsXP Professional Service Pack3 Excel: Microsoft Office Professional Plus 2010 14.0.5128.5000(32ビット)

  • 複数の条件付書式

    B列に1~5までに数字がランダムにはいっています。 条件は ・B列が空白ならA列は無色 ・B列が1ならA列は赤 ・B列が2ならA列は青 ・B列が3ならA列は黄色 ・B列が4ならA列は緑 というのをマクロで行ないたいです。 自分で記録して Sub Macro32() Columns("A:A").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=""""" Selection.FormatConditions(1).Interior.Pattern = xlNone Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=1" Selection.FormatConditions(2).Interior.ColorIndex = 38 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=2" Selection.FormatConditions(3).Interior.ColorIndex = 40 End Sub 4つ目に Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=3" Selection.FormatConditions(4).Interior.ColorIndex = 32 とするとエラーになります。 3つ以上の条件付書式の書き方を教えてください。 あとこの構文のSelectionはwithで省略できますか? よろしくお願いします。

  • 【2】 【VBA】アクセス 条件付書式 (Yes/No型) 

    以前にも質問してアドバイスを頂き ​http://msdn.microsoft.com/ja-jp/library/cc347606.aspx​ をみてやってみたのですが全然うまくいきませんでした。 式 [テーブル1.フィールド1]=True 該当するものの背景を灰色 にしたいのですが この「テーブル1」は「親フォーム」のサブフォームの中に入っている「子フォーム」上あるものなのです。 Sub test5() With Forms("子フォーム").Controls("フィールド1").FormatConditions(1) .BackColor = RGB(255, 255, 255) End With End Sub を実行すると マクロの式または visual Basic コードで参照されている ’子フォーム’フォームが見つかりません。 のエラーが返ります。 そもそも「親フォーム」「テーブル1」はどこに入れればいいでしょう? よろしくお願いします。

  • VBAで条件付書式設定方法

    次の内容の件です Dim wArray As Variant Dim wI As Integer ' セルA3:K3の条件付書式設定 A3の設定:A3=B3は黒,A3<B3は緑,A3>B3は赤,以降同様に wArray = Array(, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L") For wI = 1 To UBound(wArray) - 1    Sheets("Sheet1").Cells(3, wI).Select    Selection.FormatConditions.Delete    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$" & wArray(wI) & "3=$" & wArray(wI + 1) & "3"    With Selection.FormatConditions(1).Font      .Bold = False      .Italic = False      .ColorIndex = xlAutomatic    End With    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$" & wArray(wI) & "3<$" & wArray(wI + 1) & "3"    With Selection.FormatConditions(2).Font      .Bold = False      .Italic = False      .ColorIndex = 10    End With    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$" & wArray(wI) & "3>$" & wArray(wI + 1) & "3"    With Selection.FormatConditions(3).Font      .Bold = False      .Italic = False      .ColorIndex = 3    End With Next wI 実行時にアクティブセルにならないコーディング方法は? また、もっと合理的な、シンプルな方法はないでしょうか? いろいろと、やってみましたが、エラーとか行ズレとなり困っています よろしくご教示ください

  • 条件付書式をVBAでセルに設定するときのルール

    図のような列があります。 C列にこだわっているわけではないのですが、その左側にある列で計算をしているという意味で、A、B列はあけただけです。 で、IF文で計算してある条件に合致するとC列で「TRUE」を表示し、合致していない場合はそのときの計算結果を表示させています(IF文的に正しくないので、計算したままの値が計算結果として表示される)。 この結果の見せ方として、これまではC列に「条件付書式」を手動で設定し、文字がTRUEのとき字を青くする表示にしていたのですが、同様の処理を行うExcel Bookファイルが多いため、VBAで条件書式を設定しようとし、次のような記述を実行しました。 すると、図のような結果になりました。 ---------------------------------------------- Sub TestSample() Dim i As Long i = 20 '実際には最終行はBookによって異なるので、 ’行末検索させせていますが、とりあえずここでは20としておきます。 With ActiveSheet Range(Cells(2, 3), Cells(i, 3)).Select With Selection     FormatConditions.Add Type:=xlTextString, String:="TRUE", _     TextOperator:=xlContains     .FormatConditions(1).Font.Color = RGB(0, 50, 255) ’ーーA     .FormatConditions(1).Interior.TintAndShade = 0   ’ーーB End With End With End Sub ---------------------------------------------- 質問が2つあります。 1. 背景がいわゆる「色なし」ではなく白くなっていますが、背景「色なし」かつ「罫線でかこむ」には、どのような記述をすればよいでしょうか 2. FormatConditions.Add Type:~~~~ につづく別の行(Aのところ)に「FormatConditions.」と記述すると実行できません。 マクロで条件書式の自動記録をやって参考にしたところ、添値のような(1)が記録されることに気が付き、それを真似して FormatConditions(1). としたところ、動作しました。 最初だけFormatConditionsで、なぜAのところはFormatConditions(1).となるのか、またAとBはどちらも「FormatConditions(1).」でダブっているのに処理上エラーを返さないのか、理屈がわかりません。 (1)がつく意味と、AとBはどちらも(1)で(ダブっても)動作するのか(逆にいえば、なぜ最初のFormatConditionsだけ、番号がついていないのか、たぶんデフォルトで(0)の意味?) について、このへんの仕組みの解説をよろしくお願いします。

  • EXCELVBAであるセルに設定されている条件式書式を取得したいと

    EXCELVBAであるセルに設定されている条件式書式を取得したいと 以下のマクロを組みました。しかし、3つ設定されている条件式のうち 1つの条件が3回表示されるため、困っています。 何が悪いのかご教授ください。 Public Sub FormatConditionsTest() Dim obj As Range Set obj = Cells(108, 10) Dim colFmt As FormatConditions Set colFmt = obj.FormatConditions Dim item As FormatCondition For Each item In colFmt MsgBox (item.Formula1) Next End Sub

専門家に質問してみよう