- ベストアンサー
土日に×をつけるマクロを教えて下さい
シフトに利用したいのですが、エクセルでE6~Al6まで曜日が入っています。 職員はD7~D16まで入っています。そこで、土日であればE7~E16と縦に全ての職員に×を入力されるマクロの作り方を教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1の方と同じ意見ですが >シフトに利用したいのですが シフト表で土日は入力しないようわかりやすくしたいという事でしたら 条件付き書式の設定で、6行目の日付が土日だったセルの塗りつぶし色を付ける 方が便利で使いやすいと思うのですが。 一応、コードは Sub ボタン1_Click() Dim s As Range Set s = Range("E7:AI16") s.ClearComments For Each ss In s If Weekday(Cells(6, ss.Column).Value) = 1 Or Weekday(Cells(6, ss.Column).Value) = 7 Then ss.Value = "×" End If Next End Sub こんな感じかと。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
まぁ,表に関数を埋めてしまうと他の用事で記入したときとかに,翌月とかに使い回せなくなってしまいますからね。 >エクセルでE6~Al6まで曜日が入っています 6行目には「言葉で」曜日が「土」とか「日」と記入若しくはTEXT関数で計算できているとします。 非常によく見かける間違いですが,WEEKDAY関数を使って書式で曜日を表示しているとかではダメなので注意してください また,年月日日付を書式によって曜日を表示している場合も,このマクロではできませんので注意してください。 作成例: sub macro1() dim i as integer for i = range("E6:AI6").find(what:="土",lookin:=xlvalues,lookat:=xlpart).column to 35 step 7 cells(7, i).resize(10,1) = "×" next i for i = range("E6:AI6").find(what:="日",lookin:=xlvalues,lookat:=xlpart).column to 35 step 7 cells(7, i).resize(10,1) = "×" next i end sub #余談 6行目にTEXT関数を使って曜日を言葉で計算する,そのために各列が何年何月の何日なのか計算できるようにワークシート上に仕込んであるなら,その仕込みをマクロでも利用して計算させた方がもっと簡単です。 作成例: E5セルに 2012/3/1 が計算されている。AI列まで同様に計算してある。 E6セルに =TEXT(E5,"aaa;;;") と計算して,曜日を言葉で表示してある。 sub macro2() dim i on error goto errhandle for i = 5 to 35 if weekday(cells(5, i),vbmonday)>5 then cells(7, i).resize(10, 1) = "×" end if next i errhandle: end sub
お礼
ちなみに前月の兼ね合いで、次月の土日は×になっても、前月の土日、次月で言うと平日になりますよね、が×のままなので、前月は×でも次月の平日は空欄になるとありがたいです。それと指定の人のセルで金曜に色をつけることもしたいのです。
- chiune
- ベストアンサー率24% (30/124)
マクロじゃなきゃダメですか? 関数でできますが。 E7セルへ =IF(OR(E$6="土",E$6="日"),"×","") をいれて、E7~Al16までコピー。
お礼
そうなんですが、簡単なことなのかもしれませんが、マクロを使ってやっていきたいのです。初めは簡単な事からでもやっていきたいのです。 ありがとうございました。
お礼
ちなみに前月の兼ね合いで、次月の土日は×になっても、前月の土日、次月で言うと平日になりますよね、が×のままなので、前月は×でも次月の平日は空欄になるとありがたいです。それと指定の人のセルで金曜に色をつけることもしたいのです。