次の方法で共有

excel2003 weekday関数について

Anonymous
2014-04-01T02:33:14+00:00

excel2003で条件付書式に下記条件を設定してあります。

土曜日と日曜日に背景色を黄色にする設定です。

同じ設定で3月までは期待どうりの結果が出ますが、4月以降は金曜日と土曜日のセルに色が付いてしまいます。

サポートが終了したのは知っていますが、これもその影響でしょうか?

    With Range(Cells(C5, AG44)

        .FormatConditions.Delete

        .FormatConditions.Add Type:=xlExpression, Formula1:= _

            "=OR(WEEKDAY(C$6)=7,WEEKDAY(C$6)=1)"

        .FormatConditions(1).Interior.ColorIndex = 36

    End With

試しに空いているセルにweekday関数を指定すると土曜日は7で日曜日は1が返されていますが、条件付書式では同じ条件を指定しても金曜日と土曜日に色が付きます。

補足:5行目に日付、6行目に曜日を設定し、5行目から44行目まで曜日により色を変えることをやってます。

昨日以前に実行した場合は問題なかったのですが、今日実行してみるとおかしくなっていました。

ちなみにおかしくなっているシートの条件付書式を一旦削除して同じ条件を追加しても配色はおかしいままです。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2014-04-01T05:51:59+00:00

どうも、これみたいですね。

http://support.microsoft.com/kb/895562/ja

で、今回の場合、絶対参照に変えるのも面倒なわけで、選択されたところに設定すれば良いかってことになります。

普通はこんなSelect不要なわけですが、

Sub aaa()

With ActiveSheet

  With .Range("C5:AG44")

    .Select

    .FormatConditions.Delete

    .FormatConditions.Add Type:=xlExpression, Formula1:= _

        "=OR(WEEKDAY(C$6)=7,WEEKDAY(C$6)=1)"

    .FormatConditions(1).Interior.ColorIndex = 36

  End With

  .Range("A1").Activate

End With

End Sub

としてみたら、ちょっと試した範囲では症状は出ません。

(本当に解消したのかどうかは保証の限りではありません)

ただ、この方法の場合、今はActiveSheetが相手ですから問題ないわけですが、いろいろなシートを相手にしているコードの場合、設定するシートを事前にActiveにしておく必要が出てきます。

(ActivesheetでないとSelectはこけます)

参考まで。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-04-01T05:35:12+00:00

    意図は了解しました。

    >1回実行したあと続けて何回か実行すると色の付くセルがおかしくなります

    少なくとも条件付き書式が設定されて、保存されたブックを開いて最初に実行した時おかしくなる現象は確認しました。

    ただ、表示がおかしくなる原因は、条件付き書式の式が壊れているためで、Weekday関数とは関係なさそうです。

    (例えばC6がIR6に連れているなど。おかしくなったところで、C列の条件付き書式の式を確認すればわかります)

    私の環境では、そうなってから再度実行すると正常化します。

    なんでこんなことになるのかは理解不能です。

    後程、あちこち漁ってみますが、何か出てくるかな?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2014-04-01T05:01:37+00:00

    記述されたものをコピペしましたが、1回実行したあと続けて何回か実行すると色の付くセルがおかしくなります。

    やっていることは現在のシート(?月)をコピーして翌月のシートを作成し、土日の色を変える。

    日数が31日に満たない月は条件式を削除しているので、どうしても再定義が必要なので・・・。

    シート上のB3セルに日付(西暦)を入れてあり、6行目には$B$3、$B$3+1・・・と定義しています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2014-04-01T04:40:48+00:00

    もし、C列からAG列で、6行目に日付があり、そこで5行から44行の各列の制御をするっていうのでしたら、

    Sub aaa()

    With ActiveSheet

      With .Range("C5:AG44")

        .FormatConditions.Delete

        .FormatConditions.Add Type:=xlExpression, Formula1:= _

            "=OR(WEEKDAY(C$6)=7,WEEKDAY(C$6)=1)"

        .FormatConditions(1).Interior.ColorIndex = 36

      End With

    End With

    End Sub

    でちゃんと設定できるようですが?(2003で検証)

    少なくとも2014.4~5ではちゃんと色が付きます。

    なお、修飾なしでRangeとかCellsを使うのは間違えの元です。

    同じことなんですが、一応ActiveSheetを前提にフル修飾した形に書き直しました。

    あと、6行目に何を入れておられますか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2014-04-01T04:24:47+00:00

    サポート切れの影響はないです。

    >With Range(Cells(C5, AG44)

    >"=OR(WEEKDAY(C$6)=7,WEEKDAY(C$6)=1)"

    のあたりの記述がなんか変ですので、意図をもう少しはっきりしてください。

    (例えば、C6に日付が入り、C5の色を変えるとかと言う意味です。また適用範囲はC5:AG44という事で良いのか?)

    条件付き書式をわざわざVBAで設定したことはほとんどありませんが、あまりややこしい問題に遭遇したこ記憶はないですし、WeekDay関数も問題があると言う覚えもありません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません