- ベストアンサー
Excelでの名前挿入マクロについて
- Excelでの名前挿入マクロの作り方を教えてください。
- A列に日程のカレンダー、B列に曜日を設定し、土日祝日の場合はセルに灰色を付けています。色の付いていないセルに順番にAくん・Bくん・Cくん・Dくん・Eくんと名前を挿入したいです。マクロを使ってこの操作を自動化する方法を教えてください。
- 具体的な手順としては、名前を行列として定義し、名前をセルに挿入する前に左のセルに文字があるか判定し、色の付いていないセルに順番に名前を挿入します。セルの移動と判定を繰り返し、左のセルに文字が無くなったら終了とします。具体的なコードの書き方も教えてください。
- みんなの回答 (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 こんな感じで というかこれはマクロ使わずに、計算式のほうが容易な気がします
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
>A列に日程のカレンダー ・ B列に曜日 ・ 土日祝日の場合は自動的にAからC列まで灰色がセルになるようにExcel2010の条件付書式で設定しています。 その条件付き書式において色を付ける条件として入力されている数式がどの様なものなのかが判れば、マクロを使わずとも、ワークシート関数を使って、色が付いているところを除き、上から Aくん・Bくん・Cくん・Dくん・Eくん Aくん・・・(繰り返し)と、カレンダー最後の行まで入力する事も可能だと思われますので、 (1)カレンダーの初日の日付はA列の何行目に入力されているのか? (2)その灰色の色を付ける条件として、条件付き書式の「書式ルールの編集」ダイアログボックス(或いは「新しい書式ルール」ダイアログボックス)の「次の数式を満たす場合に値を書式設定」欄に入力されている数式は、どの様なものなのか? (3)Aくん・Bくん・Cくん・Dくん・Eくんという氏名の一覧が入力されている表が、もし既にある場合には、その氏名の一覧表において、実際の氏名が入力されているセル範囲は何シートの何列の何行目から、どちらの方向(下に向かってなのか? 右に向かってなのか?)なのか?(もし氏名の一覧表が存在しなければ、新たに作れば良いだけです) という事を御教え頂けないでしょうか?
- web2525
- ベストアンサー率42% (1219/2850)
No1です ちょっと説明が足りなかった 条件付き書式での塗りつぶし条件がわからないので、その部分は塗りつぶし条件として表記しています