Access2016、accdb環境で
VBAでフォームのコンボボックスに条件付き書式をマスタテーブルからループを使い一括で登録したく、
フォーム読み込み時に追加のコードを書いているのですが
4件目で「実際の書式条件よりも多い値が、書式条件数に設定されています」と出てしまい追加できない状態です
ネットで検索してみても3件までと書いてある事もあれば
FormatConditions.Addを4回以上実行できている例もありどうすれば入れられるのかわからないのです
件数はマスタテーブルから読み込むため不定になります
どうすれば4件以上追加できるのでしょうか?
Acc2016なら条件付き書式4件以上でも追加できるはずです。(最大何件かまでは把握してませんが。)
3件まではかなり前のバージョンだったと思います。
最初に条件付き書式を削除してから、追加してますか。
実際のコードを提示してください。
ありがとうございます
実際のコードは以下のようになっています
Dim Db As DAO.Database
Dim Rs As Recordset
Dim StrSQL As String
Dim Fmt As FormatCondition
Private Sub Form_Load()
Set Db = CurrentDb
StrSQL = "SELECT DISTINCT 文字色 FROM 項目MT ORDER BY 文字色"
Set Rs = Db.OpenRecordset(StrSQL, dbOpenSnapshot)
Me!項目.FormatConditions.Delete →ここで削除してるはず
Do Until Rs.EOF = True
Set Fmt = Me!項目.FormatConditions.Add(acExpression, acEqual, "[文字色] = " & Rs!文字色)
Fmt.ForeColor = Rs!文字色 → ループ4回目のここでエラーになります
Rs.MoveNext
Loop
End Sub
当方、Access2016で同じエラー解決しました。
条件付き書式のスペースを消すとエラーが出なくなりませんか。
NG: "[文字色] = " & Rs!文字色
OK: "[文字色]=" & Rs!文字色
これは以下2点において、Access2016のバグと言っていいと思います。
・条件付き書式の解析の問題
・エラー内容とメッセージが違う問題
手元にあるフォームで試してみましたが、6件登録してもエラーにはなりませんでした。
テーブルとか作るのは面倒なので、色は配列にしました。
Access2019ですので、ひょっとしてバージョンで違うのかな。
デザインビューで手作業で条件書式を追加したときは4件以上でも登録できますか。
デザインビューで試してみたところ4件、5件と追加できていました…
正直なところ2016でなぜこのエラーが出るのか分かりません
今日は無理ですが、明日、出先にAccess2013環境があるので試してみます。
文字色がレコードに保存されているならリッチテキスト形式を使うと楽ができるかもしれません
標準モジュールに次の関数を追加する(※)
新たにテキストボックスを設置する
このテキストボックスは編集できないので、編集が必要なら元のテキストボックスにぴったり重ね合わせて(前面配置にする)フォーカス取得時に
Me!項目.setFocus
とかしてあげる必要があります(※)単純な計算なので関数を使わず直接コントロールソースで計算させることもできます
いつも各種資料を見させて頂いている中、指導ポイントがスゴイ。
ここまで適格に指導されているホームページは他にはないと思います。