プロが教えるわが家の防犯対策術!

5人の当番表を作りたいと思います
A列に日程のカレンダー ・ B列に曜日 ・ 土日祝日の場合は自動的にAからC列まで灰色がセルになるようにExcel2010の条件付書式で設定しています。

色が付いているところを除き、上から Aくん・Bくん・Cくん・Dくん・Eくん Aくん・・・(繰り返し)と、
カレンダー最後の行まで入力できるマクロを作りたいのですがどのように書けばいいでしょうか?

手順としては、次のような感じかなと思います。
やりたいことはあるのですが、どうやってコードを書けば良いか分かりません。
その方法も含めてご教示いただければ勉強になります。

1.名前を行列として定義
2.今のセルから一つ左に文字があるか判定
3.色が付いていなければAくんを挿入
4.一つ下のセルへ移動 2の判定をしてBくん挿入



5.左に文字が無くなれば終了

A 回答 (3件)

>3.色が付いていなければAくんを挿入



VBAでは条件付き書式で塗りつぶされたセル色を認識できません

データは2行目から開始されていると仮定して

1.名前を行列として定義

Dim Tantou(4) As String
Tantou(0) = "A君"
Tantou(1) = "B君"
Tantou(2) = "C君"
Tantou(3) = "D君"
Tantou(4) = "E君"

2.今のセルから一つ左に文字があるか判定
4.一つ下のセルへ移動
5.左に文字が無くなれば終了

Range("A2").Select
Range(Selection, Selection.End(xlDown)).Offset(0, 2).Select
For Each ObjRange In Selection
ココに(3.色が付いていなければTantou()を挿入)の処理
Next ObjRange


問題の
3.色が付いていなければAくんを挿入
の処理ですが

If 塗りつぶし条件を満たしていない場合 Then
Tc = WorksheetFunction.CountA(ActiveSheet.Range("C2:" & ObjRange.Address))
i = Tc Mod 5
ObjRange.Value = Tantou(i)
End If

こんな感じで

というかこれはマクロ使わずに、計算式のほうが容易な気がします
    • good
    • 0

>A列に日程のカレンダー ・ B列に曜日 ・ 土日祝日の場合は自動的にAからC列まで灰色がセルになるようにExcel2010の条件付書式で設定しています。



 その条件付き書式において色を付ける条件として入力されている数式がどの様なものなのかが判れば、マクロを使わずとも、ワークシート関数を使って、色が付いているところを除き、上から Aくん・Bくん・Cくん・Dくん・Eくん Aくん・・・(繰り返し)と、カレンダー最後の行まで入力する事も可能だと思われますので、

(1)カレンダーの初日の日付はA列の何行目に入力されているのか?

(2)その灰色の色を付ける条件として、条件付き書式の「書式ルールの編集」ダイアログボックス(或いは「新しい書式ルール」ダイアログボックス)の「次の数式を満たす場合に値を書式設定」欄に入力されている数式は、どの様なものなのか?

(3)Aくん・Bくん・Cくん・Dくん・Eくんという氏名の一覧が入力されている表が、もし既にある場合には、その氏名の一覧表において、実際の氏名が入力されているセル範囲は何シートの何列の何行目から、どちらの方向(下に向かってなのか? 右に向かってなのか?)なのか?(もし氏名の一覧表が存在しなければ、新たに作れば良いだけです)

という事を御教え頂けないでしょうか?
    • good
    • 0

No1です


ちょっと説明が足りなかった

条件付き書式での塗りつぶし条件がわからないので、その部分は塗りつぶし条件として表記しています
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!