Excel VBA質問箱 IV

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

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


2427 / 13645 ツリー ←次へ | 前へ→

【68091】セルの値により色付けする bakadeus 11/1/31(月) 21:07 質問[未読]
【68092】Re:セルの値により色付けする かみちゃん 11/1/31(月) 21:46 発言[未読]
【68093】Re:セルの値により色付けする 八家九僧陀 11/1/31(月) 22:57 お礼[未読]
【68094】Re:セルの値により色付けする 八家九僧陀 11/1/31(月) 23:00 発言[未読]

【68091】セルの値により色付けする
質問  bakadeus E-MAIL  - 11/1/31(月) 21:07 -

引用なし
パスワード
   社員の運転免許証の期限チェック表を作成しようとしています。
F2に[=today()]関数により今日の日付を設定しています。
f4セル以下に各社員の免許証期限日が入力されています。
F2を基準日としてF4以下の日付を対比して30日以内なら黄色(更新時期であることを喚起する)、0以下なら赤色(期限超過であることを警告する)に色付けしたいと下記のVBAを実行しましたが、矢印部分で「インデックスが有効範囲ではありません」とのメッセージが表示されます。
どこを修正すればよいでしょうか?
また、変数mydayに変数を代入するよう宣言していますが、この宣言はできなのでしょうか?(mydayでうまく実行できなかったので使用していませんが)
ご教示お願いします。

Sub 期限チェック()

Dim 基準日 As Date
Dim myday As Date
Dim 日数 As Long

基準日 = Worksheets("免許証確認").Range("F2").Value
'myday = Range(Cells(i, 6)).Value
'日数 = myday - 基準日

i = 4

Do While Worksheets("免許証確認").Cells(i, 6) <> ""
  If Worksheets("免許証確認").Cells(i, 6) - 基準日 >= 0 And Worksheets("免許証確認").Cells(i, 6) - 基準日 <= 30 Then
  Worksheets("免許証確認").Cells(i, 6).Interior.ColorIndex = 65535 ←エラー
  
  ElseIf Worksheets("免許証確認").Cells(i, 6) - 基準日 < 0 Then
  Worksheets("免許証確認").Cells(i, 6).Interior.ColorIndex = 15773696
  
  End If
  
  i = i + 1
  
  Loop

End Sub

【68092】Re:セルの値により色付けする
発言  かみちゃん E-MAIL  - 11/1/31(月) 21:46 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>F2を基準日としてF4以下の日付を対比して30日以内なら黄色(更新時期であることを喚起する)、0以下なら赤色(期限超過であることを警告する)に色付けしたいと下記のVBAを実行しましたが、矢印部分で「インデックスが有効範囲ではありません」とのメッセージが表示されます。

本当に
Worksheets("免許証確認").Cells(i, 6).Interior.ColorIndex = 65535
でそのエラーメッセージなのでしょうか?

以下のようなコードを、「免許証確認」という名前のシートがあるブックを
アクティブにした状態で実行すると、

Sub test()
 Dim i As Long
 i = 1
 Worksheets("免許証確認").Cells(i, 6).Interior.ColorIndex = 65535
End Sub

「Interior クラスの ColorIndex プロパティを設定できません」
というエラーメッセージになります。
その場合、65535 という値はどこから知り得たのですか?

>また、変数mydayに変数を代入するよう宣言していますが、この宣言はできなのでしょうか?(mydayでうまく実行できなかったので使用していませんが)

どのようにうまくいかなかったのでしょうか?
気になるのは、
myday = Range(Cells(i, 6)).Value
というコードでは、アクティブシートがどこになっているのか?
変数 i という値に代入されていない。
そもそも、
myday = Range("F" & i).Value

myday = Cells(i, 6).Value
としたいのではないでしょうか?

【68093】Re:セルの値により色付けする
お礼  八家九僧陀  - 11/1/31(月) 22:57 -

引用なし
パスワード
   ▼かみちゃん さん:
早速のご教示ありがとうございました。

>その場合、65535 という値はどこから知り得たのですか?
 マクロ記録で、任意のセルに赤色、黄色とした場合のコードから得た色番号ですが、再度マクロ記録で着色したコードを確認したところ、すみません、間違っていました。
そのままのVBAで、正しい色番号に修正したところ、ちゃんとできました。
有難うございました。
質問する前に、もっと慎重に試行錯誤すべきでした。
申し訳ありませんでした。

【68094】Re:セルの値により色付けする
発言  八家九僧陀  - 11/1/31(月) 23:00 -

引用なし
パスワード
   すみません。
会社でこの質問箱を利用して質問し、自宅で「お礼」をしたら、投稿者名が異なってしまいました。
bakadeus=八家九僧陀・・・です。

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