Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1121 / 2272 ツリー ←次へ | 前へ→

【8681】リストボックスの書式設定 メイ子 06/10/16(月) 11:46 質問[未読]
【8682】Re:リストボックスの書式設定 Gin_II 06/10/16(月) 12:22 回答[未読]
【8685】Re:リストボックスの書式設定 メイ子 06/10/16(月) 13:00 お礼[未読]
【8683】Re:リストボックスの書式設定 まさ7251 06/10/16(月) 12:25 発言[未読]
【8686】Re:リストボックスの書式設定 メイ子 06/10/16(月) 13:04 お礼[未読]
【8701】Re:リストボックスの書式設定 メイ子 06/10/19(木) 16:11 質問[未読]
【8707】Re:リストボックスの書式設定 まさ7251 06/10/19(木) 23:54 回答[未読]
【8708】Re:リストボックスの書式設定 メイ子 06/10/20(金) 11:10 質問[未読]
【8710】Re:リストボックスの書式設定 まさ7251 06/10/20(金) 12:10 発言[未読]
【8712】Re:リストボックスの書式設定 メイ子 06/10/20(金) 14:51 お礼[未読]

【8681】リストボックスの書式設定
質問  メイ子  - 06/10/16(月) 11:46 -

引用なし
パスワード
   こんにちは、メイ子と申します。
メインフォーム「目次」にリスト「担当者」があり、リスト「担当者」からデータを選択すると、サブ「詳細」に詳細を表示するとともに、選択済みのリストのデータに色付けしていきたいのです。
いろいろ参考にして、下記のようにしてみましたが、
With Me!担当者.FormatConditionsのところで、「オブジェクトは、このプロパティまたはメソッドをサポートしていません」とエラーがでます。
リストボックスの選択データに色付けはできないのでしょうか?
どなたかご指導をお願いいたします。


Private Sub 担当者_AfterUpdate()
   
   Me!詳細.Requery
  
Dim db As Database
Dim qqq As QueryDef

Set db = CurrentDb

Dim ctl As Control
Dim aaa As String
Dim sql As String


  Set ctl = Me!担当者


  For Each varItem In ctl.ItemsSelected
    aaa = aaa & " or 担当者='" & ctl.ItemData(varItem) & "'"
  Next varItem

  aaa = Mid(aaa, 9)
  
  Debug.Print aaa
   
    With Me!担当者.FormatConditions
       .Delete
       With .Add(acExpression, , "担当者=" & aaa)
       .BackColor = 16764057
       .FontBold = True
       End With
    End With

End Sub

【8682】Re:リストボックスの書式設定
回答  Gin_II  - 06/10/16(月) 12:22 -

引用なし
パスワード
   >リストボックスの選択データに色付けはできないのでしょうか?

リストボックスは、条件付書式機能がサポートされていないと思いますので、
無理だと思います。

【8683】Re:リストボックスの書式設定
発言  まさ7251  - 06/10/16(月) 12:25 -

引用なし
パスワード
   >With Me!担当者.FormatConditionsのところで、「オブジェクトは、このプロパティまたはメソッドをサポートしていません」とエラーがでます。

Access2000だと、デザインモードで、リストボックスを選択した状態で、
メニューの書式−条件付き書式 が選択できませんね。
よって、そもそもリストボックスに条件付き書式は適用できないのではないかと思います。
(メイ子さんのAccessのバージョンがわかりませんが。)

そもそも、コントロールに対しての書式ですから、
1行ごとに色を変えること自体無理だと思います。

>リストボックスの選択データに色付けはできないのでしょうか?

リストボックスでは無理でしょう。
サブフォームをリストボックスのように作れば出来ると思います。

【8685】Re:リストボックスの書式設定
お礼  メイ子  - 06/10/16(月) 13:00 -

引用なし
パスワード
   ▼Gin_II さん:
>>リストボックスの選択データに色付けはできないのでしょうか?
>
>リストボックスは、条件付書式機能がサポートされていないと思いますので、
>無理だと思います。

やはりそうなんですね。ありがとうございました。

【8686】Re:リストボックスの書式設定
お礼  メイ子  - 06/10/16(月) 13:04 -

引用なし
パスワード
   まさ7251 さん

お教えいただいてありがとうございます。

>Access2000だと、デザインモードで、リストボックスを選択した状態で、
>メニューの書式−条件付き書式 が選択できませんね。
>よって、そもそもリストボックスに条件付き書式は適用できないのではないかと思います。
>(メイ子さんのAccessのバージョンがわかりませんが。)

Access2000です。

>リストボックスでは無理でしょう。
>サブフォームをリストボックスのように作れば出来ると思います。

サブフォーム中のレコードに色をつけるという形にするのですね。
一度考えてみます。
わからなくなりましたら、またお願いいたします。

【8701】Re:リストボックスの書式設定
質問  メイ子  - 06/10/19(木) 16:11 -

引用なし
パスワード
   >リストボックスでは無理でしょう。
>サブフォームをリストボックスのように作れば出来ると思います。

作り直してみました。
メインフォームの中にサブフォームを二つ作り、サブ「一覧」のフィールド「担当者」をクリックしたときのイベントに下記のように記述しました。
クリックしたレコードすべてに色をつけていきたいので、「.delete」を消すと、
「実際の書式条件数の数より多い値が、書式条件数に設定されています。」
と表示されエラーになります。
「.delete」をつけたまま、なんとかaaaの中に書式条件を足していきたいのですが、うまく行きません。どなたかご指導お願いいたします。

Private Sub 担当者_Click()

   Me!詳細.Requery

 Dim aaa As String

   aaa = aaa & " or 担当者='" & Me.担当者 & "'"
   aaa = Mid(aaa, 9)
 
    With Me.担当者.FormatConditions
    .Delete ←削除
       With .Add(acExpression, , "担当者=" & aaa)
       .BackColor = 16764057
       .FontBold = True
       End With
    End With
  
  
End Sub

【8707】Re:リストボックスの書式設定
回答  まさ7251  - 06/10/19(木) 23:54 -

引用なし
パスワード
   >「.delete」をつけたまま、なんとかaaaの中に書式条件を足していきたいのですが、
> うまく行きません。どなたかご指導お願いいたします。

サブルーチン内で宣言している変数は、サブルーチン内でのみ有効です。
よって、aaaは、担当者をクリックするたびにクリアされます。
サブルーチンの外に出せば、このフォーム内で有効になります。

条件式は、”担当者='aaa' or 担当者='bbb'”とするより、
”担当者 In ('aaa','bbb')”のようにするほうがすっきりするかと思います。

ちなみに、クリック時に追加していくだけでは、
当然、同じ担当者を何度もクリックすると、何個も条件に入ってしまいますし、
間違って選んだ際にやり直しすることも出来ませんが、
その辺は、問題ないのでしょうか。

【8708】Re:リストボックスの書式設定
質問  メイ子  - 06/10/20(金) 11:10 -

引用なし
パスワード
   まさ7251 さん、お教えいただいてありがとうございます。

>サブルーチン内で宣言している変数は、サブルーチン内でのみ有効です。
>よって、aaaは、担当者をクリックするたびにクリアされます。
>サブルーチンの外に出せば、このフォーム内で有効になります。

標準モジュールを1つ作り、下記のように記述しました。
Public aaa As String

>条件式は、”担当者='aaa' or 担当者='bbb'”とするより、
>”担当者 In ('aaa','bbb')”のようにするほうがすっきりするかと思います。
下記のように条件欄を変え、deleteは残して、public変数を参照するようにしてみましたが、一瞬上手く行ったかのように見えたのですが、やはり複数条件になりません。

Private Sub 担当者_Click()

   Me!詳細.Requery

 Dim aaa As String

   aaa = aaa & ", '" & Me.担当者 & "'"
   aaa = Mid(aaa, 3)
 
    With Me.担当者.FormatConditions
    .Delete
       With .Add(acExpression, , "担当者 In(" & aaa & ")")
       .BackColor = 16764057
       .FontBold = True
       End With
    End With
  
End Sub

>ちなみに、クリック時に追加していくだけでは、
>当然、同じ担当者を何度もクリックすると、何個も条件に入ってしまいますし、
>間違って選んだ際にやり直しすることも出来ませんが、
>その辺は、問題ないのでしょうか。

アドバイスありがとうございます。初心者ですので、そこまで気が回りませんでした。
どう記述したらよいか考えるのに時間がかかりそうですので、まずは最低限の処理をなんとかしたいと思います。
ご指導よろしくお願いいたします。

【8710】Re:リストボックスの書式設定
発言  まさ7251  - 06/10/20(金) 12:10 -

引用なし
パスワード
   >標準モジュールを1つ作り、下記のように記述しました。
>Public aaa As String
>
>>条件式は、”担当者='aaa' or 担当者='bbb'”とするより、
>>”担当者 In ('aaa','bbb')”のようにするほうがすっきりするかと思います。
>下記のように条件欄を変え、deleteは残して、public変数を参照するようにしてみましたが、一瞬上手く行ったかのように見えたのですが、やはり複数条件になりません。
>
>Private Sub 担当者_Click()
>
>   Me!詳細.Requery
>
> Dim aaa As String

パブリック変数で宣言したものを、なぜココでも宣言するのでしょうか?

>   aaa = aaa & ", '" & Me.担当者 & "'"
>   aaa = Mid(aaa, 3)

この部分を2回通るとどうなるかわかりますか?
最初の1回は、前の2文字が不要だから良いですが、
2回目には、更に前の2文字が消えてしまいますよ。
ココでは、前の2文字を消すということはせずに、

>    With Me.担当者.FormatConditions
>    .Delete
>       With .Add(acExpression, , "担当者 In(" & aaa & ")")

こちらで前の2文字を除外するように記述すれば良いかと思います。

【8712】Re:リストボックスの書式設定
お礼  メイ子  - 06/10/20(金) 14:51 -

引用なし
パスワード
   まさ7251さん、ご回答ありがとうございました。

>> Dim aaa As String
>
>パブリック変数で宣言したものを、なぜココでも宣言するのでしょうか?

そうでした^^;

>>    With Me.担当者.FormatConditions
>>    .Delete
>>       With .Add(acExpression, , "担当者 In(" & aaa & ")")
>
>こちらで前の2文字を除外するように記述すれば良いかと思います。

With .Add(acExpression, , "顧客名 In(" & Mid(aaa, 3) & ")")
としたら、できました。本当に助かりました。ありがとうございました。
エラー処理のところを考えてみます。
またわからなくなったらお願いいたします。

1121 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078214
(SS)C-BOARD v3.8 is Free